将带时区的时间戳转换为本地时间postgres

时间:2014-03-17 23:51:34

标签: sql database postgresql

我无法弄清楚如何将存储的时间戳转换为任何本地时区,例如我有这个查询

SELECT INTO result string_agg(concat_ws(' - '
            ,sampleid
            ,starttime
            ,stoptime)
        ,'|')
FROM (
Select "ID" as sampleid,
 to_char("StartTimestamp",'YYYY/MM/DD HH24:MI:SS') as starttime,
to_char("EndTimestamp",'YYYY/MM/DD HH24:MI:SS') as stoptime from "Samples" ORDER BY starttime DESC) res;

即使" StartTimestamp"属于timestamp with time zone类型我不知道如何将其转换为系统所在的本地时区。

1 个答案:

答案 0 :(得分:0)

使用AT TIME ZONE运算符 - 或者只设置TimeZone系统变量。

thetimestamptz AT TIME ZONE 'Australia/Perth'

这也适用于UTC偏移,但要注意PostgreSQL使用ISO-8601标准进行UTC偏移。

请参阅PostgreSQL文档中的Timezones。请特别注意有关时区格式的段落以及段落:

  

要记住的另一个问题是,在POSIX时区名称中,正偏移用于格林威治以西的位置。在其他地方,PostgreSQL遵循ISO-8601惯例,即正时区偏移位于格林威治以东。