目前我有以下时间戳格式:
2018-04-02T09:00:00+09:30
如何将上面的时间戳转换为适合postgres的时间戳列,如下所示?
2018-04-02 09:00:00 +09.30
在加载到postgres表之前,如何使用python首先转换xml时间戳?
答案 0 :(得分:1)
这不需要任何转换,它是常规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,
对于
timestamp with time zone
,内部存储的值始终为UTC(通用协调时间,传统上称为格林威治标准时间,GMT)。具有指定显式时区的输入值使用该时区的相应偏移量转换为UTC 。如果输入字符串中未指定时区,则假定它位于系统的TimeZone
参数指示的时区中,并使用时区的偏移量转换为UTC。当输出
timestamp with time zone value
时,它始终从UTC转换为当前时区区域,并在该区域中显示为本地时间。要查看其他时区的时间,更改时区或使用AT TIME ZONE
构造(参见第9.9.3节)。
答案 1 :(得分:0)
如果您知道您将始终以该格式获取数据,则可以执行以下操作:
>>> a = "2018-04-02T09:00:00+09:30"
>>>
>>> b = a.replace('T', ' ').replace('+', ' +')
>>> b
'2018-04-02 09:00:00 +09:30'
这很难看,但确实有效。
将输入解释为日期然后以所需格式打印它总是更安全。