`read_sql_query`到熊猫时区被错误解释

时间:2020-11-12 03:19:06

标签: sql pandas amazon-web-services sqlalchemy

我正在使用一个名为aws data wrangler的程序包,以将MYSQL表从Glue Catalog读取到Pandas数据框。

步骤很简单。首先创建sql_engine和sql语句,然后通过wr.db.read_sql_query(query, con=sql_engine)

执行sql语句

结果数据框为

transaction_date                 created_on                modified_on
0     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
1     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
2     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
3     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
4     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
...                   ...                        ...                        ...
33901 2020-11-05 06:20:25 2020-11-06 06:20:34.100835 2020-11-06 06:20:34.100877
33902 2020-11-05 06:20:34 2020-11-06 06:20:43.551528 2020-11-06 06:20:43.551551
33903 2020-11-05 06:34:58 2020-11-06 06:35:34.719571 2020-11-06 06:35:34.719592
33904 2020-11-05 06:35:34 2020-11-06 06:35:45.229119 2020-11-06 06:35:45.229141
33905 2020-11-05 06:35:45 2020-11-06 06:36:03.171246 2020-11-06 06:36:03.171269

数据库中的日期时间为

transaction_date                 created_on                modified_on
2017-10-04 08:00:00 2018-10-05 18:56:39 2018-10-05 18:56:39
2017-10-04 08:00:00 2018-10-05 18:56:39 2018-10-05 18:56:39
2017-10-04 08:00:00 2018-10-05 18:56:39 2018-10-05 18:56:39
2017-10-04 08:00:00 2018-10-05 18:56:39 2018-10-05 18:56:39

我住在香港。数据框中的日期时间似乎要减去8小时。

我也在Github中问了这个问题。开发人员建议我在会话级别指定时区,例如,

sql_engine = wr.catalog.get_engine(connection,
    connect_args={
        "init_command": "SET SESSION time_zone='+00:00'"
    })

但是,似乎更改会话时区不会改变任何内容。这意味着即使我将时区更改为UTC或UTC + 8,结果数据帧也相同。

0 个答案:

没有答案