在Postgres中,如何从给定的TIMESTAMP WITH TIME ZONE列中提取月份(根据特定时区)?

在Postgres中,如何从给定的TIMESTAMP WITH TIME ZONE列中提取月份(根据特定时区)?

问题描述:

我有一个名为login_timestamp的列,其类型为TIMESTAMP WITH TIME ZONE在Postgres中,如何从给定的TIMESTAMP WITH TIME ZONE列中提取月份(根据特定时区)?

要检索此时间戳的月份,我会这样做:EXTRACT(MONTH FROM login_timestamp)

但是,我想检索一个特定时区的月份(在我的情况下,巴基斯坦),但无法弄清楚如何做到这一点。

的文档,这是Date/Time Functions and Operators下。在“时区”搜索该页面。

select extract(month from login_timestamp at time zone 'Asia/Karachi'); 

您可以更改时区单个会话或与set session...set local...一个单一的交易。例如,这会更改当前会话的时区。

set session time zone 'Asia/Karachi'; 

使用AT TIME ZONE结构:

SELECT EXTRACT(MONTH FROM login_timestamp AT TIME ZONE '-5'); 

-5是常数巴基斯坦偏移。

详情:

尝试应用AT TIME ZONE。演示

select extract(month from cast ('2017-07-01 01:00+03' as TIMESTAMP WITH TIME ZONE) AT TIME ZONE '+08') as monthNo 

回报

monthno 
1 6