Python 将pd.DataFrame插入SQL Server时的日期时间混淆

Python 将pd.DataFrame插入SQL Server时的日期时间混淆,python,sql,sql-server,pandas,datetime,Python,Sql,Sql Server,Pandas,Datetime,pd.DataFrame具有日期列(具有日期时间数据类型),其样式如下: %dd.%mm.%yyyyy#例如2020年8月3日 但是在插入到SQL Server之后 df.to_sql(con_参数) RDB中的结果看起来像2020年3月8日,而不是2020年8月3日。 问题不是线性的,因为例如,2020年7月31日看起来像2020年7月31日。 数据库的本地名称为SQL拉丁语通用CP1 CI AS。 怎么了? UPD到sql块供参考 correct_df = pd.read_csv(path)

pd.DataFrame具有日期列(具有日期时间数据类型),其样式如下:
%dd.%mm.%yyyyy#例如2020年8月3日
但是在插入到SQL Server之后
df.to_sql(con_参数)
RDB中的结果看起来像2020年3月8日,而不是2020年8月3日。 问题不是线性的,因为例如,2020年7月31日看起来像2020年7月31日。 数据库的本地名称为SQL拉丁语通用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)


所以,感谢Panagiotis Kanavos的消息。 如果您遇到这样的问题,您必须在DateFrime中设置csv日期字符串的格式。 比如说

df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y') #format=f'{your_date_style}'

它可以工作。它适合我。

日期没有样式或格式,它们是二进制值。仅当日期转换为字符串时,格式才适用,反之亦然。您的代码正在某处将日期转换为字符串-或者根本没有问题,并且您的客户端工具在您的区域设置中显示日期-德语?俄罗斯人?你在这里所说的都没有意义。日期和时间数据类型(在SQL Server中)没有任何格式;它们存储为二进制值。如果要将日期和时间值作为字符串插入(这不是明确的),然后在表示层中获取与SQL Server无关的其他值和/或格式。问题在于用于插入数据的格式不明确,以及表示层中的格式选择。在解析CSV的日期字段时,您可能应该使用特定格式。您确定吗?您是否100%确定您的用户区域设置与CSV文件中日期字符串的格式匹配?您是否尝试过使用显式格式创建日期时间?您尚未发布任何示例数据,因此最有可能的解释是格式不匹配。CSV文件中的日期是什么样子的?
因为我的数据框['Date']单元格是datetime64
如果解析时使用了错误的格式,这并不意味着什么