目前我的时间戳格式如下:
2018-04-02T09:00:00+09:30如何将上面的时间戳转换为适合postgres的时间戳列,如下所示?
2018-04-02 09:00:00 +09.30另外,在加载到postgres表之前,如何使用python先转换xml时间戳?
发布于 2018-04-09 08:26:35
这不需要任何转换,它是一个常规的ISO 8601 time stamp。PostgreSQL supports multiple input formats for time stamps
select timestamp with time zone '2018-04-02T09:00:00+09:30';
timestamptz
------------------------
2018-04-01 18:30:00-05
(1 row)你会注意到它是以UTC存储的。这就是你想要的。来自the docs,
对于格林威治标准时间,内部存储值始终采用通用协调时间(
,传统上称为格林威治标准时间)。指定了显式时区的输入值将使用该时区的适当偏移量转换为UTC。如果输入字符串中未指定时区,则假定它位于系统的
TimeZone参数指示的时区中,并使用该时区的偏移量将其转换为UTC。
输出时区时,始终将其从协调世界时转换为当前时区,并显示为该时区的本地时间。**要查看其他时区的时间,请更改timestamp with time zone value或使用AT TIME ZONE结构(参见第9.9.3节)。
发布于 2018-04-09 08:09:32
如果您知道您将始终以该格式获取数据,则可以执行以下操作:
>>> a = "2018-04-02T09:00:00+09:30"
>>>
>>> b = a.replace('T', ' ').replace('+', ' +')
>>> b
'2018-04-02 09:00:00 +09:30'它是丑陋的,但它是有效的。
将输入解释为日期,然后以所需格式打印总是更安全。
https://stackoverflow.com/questions/49723970
复制相似问题