【问题标题】:datetime.datetime conversion to datetimedatetime.datetime 转换为 datetime
【发布时间】:2020-11-04 04:09:51
【问题描述】:

我在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.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]找不到列“datetime”或用户定义的函数或聚合“datetime.datetime ",或者名称不明确。(4121) (SQLExecDirectW)')`

我很震惊 - 有什么帮助吗?

【问题讨论】:

  • 向我们展示您的代码和完整的错误回溯!

标签: python sql sql-server datetime casting


【解决方案1】:

您的日期时间字符串中缺少时间。您只是插入引发第一个错误的日期。 您可以通过使用日期字符串传递时间来解决此错误,请参见以下示例:

2015-01-20 00:00:00

或者你可以使用如下的日期时间模块:

首先从字符串中生成日期时间对象:

datetime_obj = datetime.datetime.strptime('20-01-2015', '%d-%m-%Y')

然后在将此日期时间对象插入数据库时​​,只需通过 str 函数将其转换为日期时间字符串

datetime_str = str(datetime_obj)

现在使用这个datetime_str

【讨论】:

    猜你喜欢
    • 2020-05-13
    • 2021-11-06
    • 2011-12-22
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多