pyodbc和sql server,将datetime.date应用于DATE列

时间:2018-01-23 09:01:17

标签: python sql-server freetds python-datetime

pyodbc使用DATETIME列处理好datetime.datetime对象。无需特殊格式 但它失败了datetime.date对象和DATE列:[HY004] [FreeTDS][SQL Server]Invalid data type (0) (SQLBindParameter)

一种方法是使用.isoformat()方法将datetime.date对象作为字符串插入。

但是:

d1 = dt.date.today()
d2 = dt.datetime.now()
print(isinstance(d1, dt.date))
print(isinstance(d1, dt.datetime))
print(isinstance(d2, dt.date))
print(isinstance(d2, dt.datetime))

返回

True
False
True
True

是否有比这样的测试更好的方法?

if isinstance(d1, dt.date) and not isinstance(d1, dt.datetime):
    d1 = d1.isoformat()

1 个答案:

答案 0 :(得分:3)

我能够在FreeTDS 0.91下重现您的问题,这是由apt install tdsodbc在Ubuntu下分发的版本。但是,我能够成功使用datetime.date参数值来使用

填充DATE列
  • FreeTDS的最新稳定版本(目前为01.00.0080)或
  • Microsoft的“用于SQL Server的ODBC驱动程序13”