我正在使用一个名为aws data wrangler的程序包,以将MYSQL表从Glue Catalog读取到Pandas数据框。
步骤很简单。首先创建sql_engine
和sql语句,然后通过wr.db.read_sql_query(query, con=sql_engine)
结果数据框为
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,结果数据帧也相同。