Sql server 使用pyodbc条件日期更新SQL Server表

Sql server 使用pyodbc条件日期更新SQL Server表,sql-server,pandas,datetime,sql-update,pyodbc,Sql Server,Pandas,Datetime,Sql Update,Pyodbc,正在尝试更新Microsoft Server SQL表列。我正在使用pyodbc库来实现这一点。不知怎的,我得到了一个错误,似乎是抱怨的日期匹配条件 注意:数据库中日期\时间列的SQL Server字段类型为“日期” 数据帧(用于更新数据库表)摘要: 用于执行更新的语句 cursor.execute("Update dbo.dtable set dbprod = '%s' where dbrid = '%s'and date_time = '%s' and dbsid = '%s'" % (da

正在尝试更新Microsoft Server SQL表列。我正在使用pyodbc库来实现这一点。不知怎的,我得到了一个错误,似乎是抱怨的日期匹配条件

注意:数据库中日期\时间列的SQL Server字段类型为“日期”

数据帧(用于更新数据库表)摘要:

用于执行更新的语句

cursor.execute("Update dbo.dtable set dbprod = '%s' where dbrid = '%s'and date_time = '%s' and dbsid = '%s'" % (data['prod'], data['RId'], data['Response Date'], data['SID']))
错误

数据错误:('22007'、'[22007][Microsoft][ODBC驱动程序13 for SQL Server][SQL Server]从字符串转换日期和/或时间时失败。(241)(SQLExecDirectW)'


在发送包含日期值的字符串时,使用标准SQL Server日期格式非常重要。在上面的代码中,您不太可能实现这一点

要进行检查,请将
数据['Response Date']
值打印为字符串,并检查当前的格式

对于SQL Server,您确实希望以这种格式发送日期时间值
YYYYMMDD HH:MM:SS
,请注意,其中没有任何斜杠或破折号

data['Response Date'] = pd.to_datetime(data['Response Date'], infer_datetime_format = True).dt.date

data['Response Date']
Out[139]: 
0        2019-11-25
1        2019-11-25
2        2019-11-25
3        2019-11-25
4        2019-11-25

99995    2019-05-21
99996    2019-05-21
99997    2019-05-21
99998    2019-05-21
99999    2019-05-21
Name: Response Date, Length: 100000, dtype: object
cursor.execute("Update dbo.dtable set dbprod = '%s' where dbrid = '%s'and date_time = '%s' and dbsid = '%s'" % (data['prod'], data['RId'], data['Response Date'], data['SID']))