You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pd.read_sql无法读取PostgreSQL中无夏令时偏移的timestamptz值

使用pd.read_sql读取PostgreSQL timestamptz列时无DST偏移日期变为NaT的问题

使用pd.read_sql从PostgreSQL数据库查询数据,涉及的列均为timestamptz类型。其中带夏令时(DST)偏移的日期能被正确读取,但不带偏移的日期会被解析为NaT。

示例A - smart_departure无DST偏移

使用DBeaver查询结果

wtt_arrivalwtt_passwtt_departuresmart_arrivalsmart_passsmart_departure
NULLNULL1970-01-01 08:23:00.000 +0100NULLNULL2022-01-14 08:23:03.000 +0000

使用pd.read_sql查询结果(示例代码:pd.read_sql('select * from database', con=engine))

wtt_arrivalwtt_passwtt_departuresmart_arrivalsmart_passsmart_departure
NoneNone1970-01-01 07:23:00+00:00NoneNoneNaT

直接获取值查询结果(Gord Thompson建议的方式)

(None, None, datetime.datetime(1970, 1, 1, 7, 23, tzinfo=datetime.timezone.utc), None, None, None)

使用psql查询结果(Adrian Klaver建议的方式)

wtt_arrivalwtt_passwtt_departuresmart_arrivalsmart_passsmart_departure
1970-01-01 07:23:00+00

示例B - smart_arrival有DST偏移

使用DBeaver查询结果

wtt_arrivalwtt_passwtt_departuresmart_arrivalsmart_passsmart_departure
1970-01-01 15:49:00.000 +0100NULLNULL2022-10-14 15:47:27.000 +0100NULLNULL

使用pd.read_sql查询结果

wtt_arrivalwtt_passwtt_departuresmart_arrivalsmart_passsmart_departure
1970-01-01 14:49:00+00:00NoneNone2022-10-14 14:47:27+00:00NoneNone

直接获取值查询结果(Gord Thompson建议的方式)

(datetime.datetime(1970, 1, 1, 14, 49, tzinfo=datetime.timezone.utc), None, None, datetime.datetime(2022, 10, 14, 14, 47, 27, tzinfo=datetime.timezone.utc), None, None)

使用psql查询结果(Adrian Klaver建议的方式)

wtt_arrivalwtt_passwtt_departuresmart_arrivalsmart_passsmart_departure
1970-01-01 14:49:00+002022-10-14 14:47:27+00

执行show search_path和\d *.scheduled_and_actual_timings的结果

timetabletooldev=> \d *.scheduled_and_actual_timings
                    View "public.scheduled_and_actual_timings"
        Column        |           Type           | Collation | Nullable | Default 
----------------------+--------------------------+-----------+----------+---------
 wtt_arrival          | timestamp with time zone |           |          | 
 wtt_pass             | timestamp with time zone |           |          | 
 wtt_departure        | timestamp with time zone |           |          | 
 smart_arrival        | timestamp with time zone |           |          | 
 smart_pass           | timestamp with time zone |           |          | 
 smart_departure      | timestamp with time zone |           |          | 

timetabletooldev=> show search_path;
   search_path   
-----------------
 "$user", public
(1 row)

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:01:12