即使我使用带有时区的查询 - 获取上一个日期而不是今天的日期,Postgresql也会给出上一个日期(美国的服务器)

时间:2016-02-05 06:13:56

标签: postgresql timezone

我正在使用美国休斯顿托管的服务器,并安装了PostgreSQL 8.4.20。我正在使用印度的服务。因此,为了将IST作为日期时间,我使用如下查询:

select current_date AT TIME ZONE 'Asia/Kolkata'

假设印度的日期时间为:2016-02-05 11:00:00

当我将查询用作2016-02-04 11:00:00时。

为什么我收到服务器日期?

我在这里使用IST。请指导我。

1 个答案:

答案 0 :(得分:1)

Postgres(像MySQL和其他一些人)有一个“会话时区”的概念。您只需将其设置为所需的值。

set timezone = 'Asia/Kolkata';
select current_date;

虽然这会返回仅限日期的值,但时间设置为午夜。如果您想要特定时区的当前日期和时间,那么:

set timezone = 'Asia/Kolkata';
select localtimestamp

请参阅Postgres文档中的herehere