【问题标题】:Pandas to_sql is rounding datetime columnPandas to_sql 正在舍入日期时间列
【发布时间】:2020-01-16 10:40:38
【问题描述】:

我正在将数据框中的所有记录上传到 SQL Server 表,但 to_sql 似乎正在舍入日期时间值。即:

assignee created_date        updated_date
my_name  2019-09-16 14:17:23 2019-11-26 14:48:39.261

两个日期都设置为 datetime64[ns]。然后,我调用以下方法:

df.to_sql(MY_TABLE_NAME, engine, if_exists='append', index=False, dtype=dtypes)

dtypes 的内容如下:

{'assignee': NVARCHAR(length=255), 'created_date': <class 'sqlalchemy.sql.sqltypes.DateTime'>, 'updated_date': <class 'sqlalchemy.sql.sqltypes.DateTime'>}

当我在 SQL Server 中查看更新的数据时,我得到以下 updated_date:

2019-11-26 14:48:39.260

正确的updated_date是(261而不是260):

2019-11-26 14:48:39.261 

任何想法为什么会发生这种情况?

谢谢大家!

【问题讨论】:

    标签: python-3.x pandas pandas-to-sql


    【解决方案1】:

    这里的解决方法是将浮点数重新映射为双精度数。以下是有关此问题的一些历史的一些链接。这似乎是与 sqlalchemy 的差异以及它与 SQL 风格在类型方面的交互方式不同的结果。

    Link to related question on Stack Overflow

    Link to Git Issue Thread on Pandas

    【讨论】:

    • 感谢您的帮助! :) 但实际上这些是日期时间字段。我的解决方案只是从日期中删除毫秒,但我仍然想知道这是否是最好的方法。 Git 问题显然已于 2015 年关闭。感谢 Ryan! :) 我会再做一些测试。
    • 应该也和这个有关系:stackoverflow.com/questions/53208187/…
    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多