首页 > 解决方案 > 将日期时间格式从 python 更改为 SQL Server 时出错

问题描述

我正在使用 Python 将我的数据加载到 SQL Server 中。我想将格式ScheduledStartDate从“20-APR-2021 09:00:00 AM”更改为“2021-04-20 09:00:00”

df['ScheduledStartDate'] = pd.to_datetime(df['ScheduledStartDate'])
df['ScheduledStartDate'] = df['ScheduledStartDate'].dt.strftime('%Y-%m-%d %H:%M:%S')

但是,我收到此错误

将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。

标签: pythonsqlsql-server

解决方案


在 SQL Serverdatetime中是一种数据类型,即您的 ScheduledStartDate 列的类型。在内部,您在该表中插入的日期并没有真正格式化,您可以阅读这篇文章的第一个失败关于这个常见错误的信息。但是,当您执行 SELECT 并格式化日期20-APR-2021 09:00:00 AM时,因为它不是以这种方式存储的,它只是以该格式显示为默认格式并匹配您的操作系统日期格式首选项。

话虽如此,您应该从 python 存储日期而不对其进行格式化,然后在检索日期时间列时对其进行格式化。喜欢:

SELECT CONVERT(varchar,ScheduledStartDate,20), *
FROM table

适合20在哪里Date Format Codeyyyy-mm-dd hh:mm:ss


推荐阅读