0

通过 pandas 运行以下查询:

conn = sqlanydb.connect( userid='xx', password='xx', eng='xx', commlinks='tcpip{host=xx port=xx}' )
query = '''select top 20 log_ts  from my_table'''
sql_output = pd.read_sql_query(query, conn, parse_dates=['log_ts'])

结果 log_ts: 2020-08-28 18:08:00

但是正确的格式(检查数据库 UI 时)是 2020-08-28 18:08:57.752000

我也尝试过pd.read_sql_query(query, conn, parse_dates={'log_ts': {'format': '%Y-%m-%d %H:%M:%S']),但无法正常工作。

任何提示将不胜感激。

4

3 回答 3

1

您需要 MySQL v5.6.4+ 来支持小数秒。

此外,您不需要使用默认的 sqlalchemy datetime 类型,您需要使用定义毫秒的 MySQL 特定 DATETIME 类型覆盖参数。

dtype={'date_time': DATETIME(fsp=6) } 
于 2020-11-13T16:18:08.410 回答
1

有趣的是,当我将它投射到TIME只有它给我秒(虽然没有日期)。但是当我将它投射到DATETIME它时,它会忽略秒数。

因此,我可以拥有原始列(没有第二列)并将另一列转换为TIME并将它们合并到 python 中(后处理)。虽然这不是一个有效的解决方案。

于 2020-11-13T17:35:29.847 回答
0

可能是您的格式缺少毫秒。像下面这样的东西怎么样。

import datetime
datetime.datetime.strptime('2020-08-28 18:08:57.752000', '%Y-%m-%d %H:%M:%S.%f' )
于 2020-11-13T16:22:33.620 回答