【发布时间】:2016-12-23 05:04:36
【问题描述】:
我有两列,一列名为“日期”,另一列名为“时间”。日期是日期数据类型,“时间”是字符数据类型。我正在使用以下查询来选择一个新的组合时间戳列
SELECT
to_timestamp(concat_ws(' ',air_date,air_time),'yyyy-MM-dd HH24:MI:SS') as datetime
FROM table1
这将返回正确的时间戳,但时区为“+00”。我想明确地告诉查询时区在“EST5EDT”中,以便我得到时区的“+04”或“+05”。我尝试了以下但收到错误
SELECT
to_timestamp(concat_ws(' ',air_date,air_time,'EST5EDT'),'yyyy-MM-dd HH24:MI:SS TZ') as datetime
FROM table1
错误:to_date 不支持“TZ”/“tz”/“OF”格式模式
SQL 状态:0A000
如何选择包含 EST5EDT 时区信息的时间戳列?
【问题讨论】:
-
这不太行。当我这样做时会发生什么,它假设输入日期时间为“UTC”,然后将其转换为“EST5EDT”。我需要postgres先将输入时间解释为“EST5EDT”,然后再转换。
-
对不起,错了,出于某种原因,我认为
to_timestamp返回timestamp without time zone。但是,timstamp input 支持您的格式,因此您可以使用像concat_ws(' ',air_date,air_time,'EST5EDT')::timestamptz这样的简单转换。 -
据此它返回'带时区的时间戳',至少在 postgres 9.5 中:postgresql.org/docs/9.5/static/functions-formatting.html
标签: postgresql