DateTimeOffset(7) 就像从 MSSQL 到 python 日期时间?
DateTimeOffset(7) like from MSSQL to python datetime?
如何将此字符串 2017-10-13 15:30:00.0000000 +00
(<= %z
前的七 (7) 个零)转换为 python 日期时间格式。
这是我收到的最新错误:
dt=datetime.datetime.strptime(f,'%Y-%m-%d %H:%M:%S.%f %z')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python36\lib\_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Program Files\Python36\lib\_strptime.py", line 362, in _strptime
(data_string, format))
ValueError: time data '2017-10-13 15:30:00.000000 +00' does not match format '%Y-%m-%d %H:%M:%S.%f %z'
如有任何帮助,我们将不胜感激。
如果您使用的是旧的 ODBC 驱动程序(例如,古老的 DRIVER=SQL Server
),那么您应该始终获得恰好 34 个字符长的 DATETIMEOFFSET(7) 值的字符串表示形式:
2017-10-13 15:30:00.0000000 +00:00
您需要做的就是 trim 小数点后第七位并从偏移量中删除冒号 ...
s = '2017-10-13 15:30:00.0000000 +00:00'
f = s[:26] + s[27:31] + s[32:]
print(repr(f))
# '2017-10-13 15:30:00.000000 +0000'
...然后字符串将正确解析
dt = datetime.datetime.strptime(f,'%Y-%m-%d %H:%M:%S.%f %z')
print(repr(dt))
# datetime.datetime(2017, 10, 13, 15, 30, tzinfo=datetime.timezone.utc)
如果您切换到较新的 ODBC 驱动程序,该驱动程序可以识别 DATETIMEOFFSET 列并 returns 它们本机,那么您可以使用 pyodbc Output Converter function 来处理它。
如何将此字符串 2017-10-13 15:30:00.0000000 +00
(<= %z
前的七 (7) 个零)转换为 python 日期时间格式。
这是我收到的最新错误:
dt=datetime.datetime.strptime(f,'%Y-%m-%d %H:%M:%S.%f %z')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python36\lib\_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Program Files\Python36\lib\_strptime.py", line 362, in _strptime
(data_string, format))
ValueError: time data '2017-10-13 15:30:00.000000 +00' does not match format '%Y-%m-%d %H:%M:%S.%f %z'
如有任何帮助,我们将不胜感激。
如果您使用的是旧的 ODBC 驱动程序(例如,古老的 DRIVER=SQL Server
),那么您应该始终获得恰好 34 个字符长的 DATETIMEOFFSET(7) 值的字符串表示形式:
2017-10-13 15:30:00.0000000 +00:00
您需要做的就是 trim 小数点后第七位并从偏移量中删除冒号 ...
s = '2017-10-13 15:30:00.0000000 +00:00'
f = s[:26] + s[27:31] + s[32:]
print(repr(f))
# '2017-10-13 15:30:00.000000 +0000'
...然后字符串将正确解析
dt = datetime.datetime.strptime(f,'%Y-%m-%d %H:%M:%S.%f %z')
print(repr(dt))
# datetime.datetime(2017, 10, 13, 15, 30, tzinfo=datetime.timezone.utc)
如果您切换到较新的 ODBC 驱动程序,该驱动程序可以识别 DATETIMEOFFSET 列并 returns 它们本机,那么您可以使用 pyodbc Output Converter function 来处理它。