【发布时间】:2019-11-03 17:03:00
【问题描述】:
我正在使用 python 3.6 和 pymssql 尝试从表中提取一些数据。一切都很好,除了 datetimeoffset 列。
我有一个表,其中有一个名为 DateCreated 的列,其类型为 DateTimeOffset。
此列有一组默认的 sysdatetimeoffset()
当我使用 tsql、azure data studio 和 freetds 实用程序时。它们都返回预期值。
当我使用本质上是这样的python脚本时
import pymssql
username = 'myusername'
pw = 'mypw'
server = 'myserver'
db = 'mydb'
c = pymssql.connect(server,username,pw,db)
cur = c.cursor()
cur.execute('select DateCreated from myTable where DateCreated and id = 2')
r = cur
for x in r:
print (x)
#print (struct.calcsize(data))
#print (data.decode("utf-8"))
break
预期的数据将类似于 2019-06-20 09:54:40.09550 -04:00
我得到的是
b'\x00.,x\x82\x00\x00\x00p\xaa\x00\x00\x10\xff\x07\xe0'
它的二进制文件很棒,我可以解压这个.. 等等,我不能.. 我可以使用pyodbc trick 对吗?!?!不,不能那样做,格式字符串不会让我解压值。
所以在这一点上我很困惑,我做错了什么,在一天结束时,我想知道为什么日期以二进制形式返回,而不是我可以操纵的东西。
一切都告诉我这应该有效。
【问题讨论】:
-
您能否添加更多有关如何保存日期的详细信息?
-
它们是由 sysdatetimeoffset 作为默认更新问题自动生成的
-
如果还有什么我可以提供的,请告诉我
标签: python sql-server python-3.6 freetds pymssql