将时间戳转换为postgres时间戳

时间:2018-04-08 23:58:51

标签: python postgresql timestamp

目前我有以下时间戳格式:

2018-04-02T09:00:00+09:30

如何将上面的时间戳转换为适合postgres的时间戳列,如下所示?

2018-04-02 09:00:00 +09.30

在加载到postgres表之前,如何使用python首先转换xml时间戳?

2 个答案:

答案 0 :(得分:1)

这不需要任何转换,它是常规ISO 8601 time stampPostgreSQL 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'

这很难看,但确实有效。

将输入解释为日期然后以所需格式打印它总是更安全。