我已将SQL Server
中的一列定义为ldate
,其数据类型为datetime
,并接受null
值。我正在尝试使用python和pyodbc
从本地机器发送数据。我有类似20-01-2015
的string
格式的日期。当我尝试发送数据时,它会抛出一个错误:
pyodbc.DataError:('22007','[22007][Microsoft][ODBC Driver 17 for SQL Server][SQL Server]从字符串转换日期和/或时间时转换失败。(241((SQLExecDirectW('(
所以我使用将string
格式转换为datetime
格式
datetime.datetime.strptime('20-01-2015', '%Y-%m-%d')
这是datetime.datetime
型。当我插入这个值时,它的投掷低于错误
pyodbc.ProgramingError:('42000','[42000][Microsoft][ODBC Driver 17 for SQL Server][SQL Server]找不到列"datetime"或用户定义函数或聚合"datetime.datetime",或者名称不明确。(4121((SQLExecDirectW('(`
我很震惊-有什么帮助吗?
您的日期时间字符串中缺少时间。你只是在插入日期,这是第一个错误。您可以通过使用日期字符串传递时间来解决此错误,请参阅以下示例:
2015-01-20 00:00:00
或者您可以使用日期时间模块如下:
首先从字符串中生成datetime对象:
datetime_obj = datetime.datetime.strptime('20-01-2015', '%d-%m-%Y')
然后,在将该日期时间对象插入数据库时,只需使用str
函数将其转换为日期时间字符串
datetime_str = str(datetime_obj)
现在使用这个datetime_str
。