【问题标题】:unable to insert date in sql table无法在sql表中插入日期
【发布时间】:2019-03-17 16:46:42
【问题描述】:

使用 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)

【问题讨论】:

  • 这是datetime 列?什么版本的 SQL Server?您是否尝试仅使用三位小数,例如20190201 01:14:54.862...
  • 我很确定您需要将日期“2019-02-01T01:14:54.862”中的分隔符设为 ISO 日期格式。

标签: sql-server


【解决方案1】:

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

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))

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多