首页 > 解决方案 > 无法在sql表中插入日期

问题描述

使用 python pyodbc 我试图在表中插入日期和时间,但得到

" ('22007', u'[22007] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]从字符串转换日期和/或时间时转换失败。(241) (SQLExecDirectW)') "

插入查询:

 cursor.executemany("""INSERT INTO DM (SI, DK, Total, CR, CCM, SDate, EDate)
  VALUES (?, ?, ?, ?, ?, ?, convert(datetime, ?, 121))""",dms)

尝试了以下格式来插入日期和时间:

20190201 01:14:54.862963
20190201T01:14:54.862963

请注意,仅使用 20190201 的日期插入时,我能够插入,但只有日期和时间面临问题,也很累以下查询。使用此查询能够插入日期

cursor.executemany("""INSERT INTO DM (SI, DK, Total, CR, CCM, SDate, EDate)
  VALUES (?, ?, ?, ?, ?, ?,?)""",dms)

标签: sql-server

解决方案


这些格式无效,无法自动转换为日期时间。

20190201 01:14:54.862963

20190201T01:14:54.862963

您可以插入以下格式:

insert into test values (1,2,convert(datetime,'20190201 01:14:54.862',121))

否则,如果您的数据采用显示的格式,您可以通过删除最后 3 位来执行以下解决方法。

insert into test values (1,2,convert(datetime,substring('20190201 01:14:54.862963',1,len('20190201 01:14:54.862963')-3),121))

希望这会帮助你。


推荐阅读