【发布时间】:2020-09-30 14:21:06
【问题描述】:
pd.DataFrame 具有 Date 列(具有 datetime 数据类型),其样式如下:
%dd.%mm.%yyyy #for example 03.08.2020
但在插入到 SQL Server 之后
df.to_sql(con_param)
结果导致 RDB 看起来像 08.03.2020 而不是 03.08.2020。
问题不是线性的,例如 31.07.2020 看起来像 31.07.2020。
数据库的本地是 SQL_Latin1_General_CP1_CI_AS。
怎么了?
UPD 到 sql 块仅供参考
correct_df = pd.read_csv(path)
correct_df = correct_df.astype({
'Req_Date': 'datetime64', 'Date': 'datetime64'})
correct_df.to_sql(con=conn, name='table', schema='schema', if_exists='append', index=False)
【问题讨论】:
-
日期没有样式或格式,它们是二进制值。 仅在日期转换为字符串时才应用格式,反之亦然。您的代码正在某处将日期转换为字符串 - 或者根本没有问题,并且您的客户端工具在您的语言环境中显示日期 - 德语?俄语?
-
您在此处实际陈述的所有内容实际上都没有多大意义。日期和时间数据类型(在 SQL Server 中)没有 any 格式;它们存储为二进制值。如果您将日期和时间值作为字符串(不是明确的)插入,然后在与 SQL Server 无关的 表示层 中获取不同的值和/或格式。问题在于用于插入数据的格式不明确,以及表示层中的格式选择。
-
在解析 CSV 的日期字段时,您可能应该使用具有特定格式的 pd.to_datetime
-
你确定吗?您是否 100% 确定您的用户区域设置与 CSV 文件中日期字符串的格式匹配?您是否尝试过使用显式格式的
to_datetime?您尚未发布任何示例数据,因此最可能的解释是格式不匹配。 CSV 文件中的日期是什么样的? -
Cause my DataFrame['Date'] cells are datetime64如果使用 错误 格式进行解析,则意义不大
标签: python sql sql-server pandas datetime