PostgreSQL AT TIME ZONE不能为给定的偏移量返回正确的时间

时间:2019-02-14 13:43:34

标签: postgresql timestamp timezone utc timezone-offset

我正试图在postgres中获取亚洲/加尔各答(印度标准时间)的本地时间。

avilpage@/tmp:avilpage> SELECT LOCALTIME;

+-----------------+
| time            |
|-----------------|
| 09:48:58.223295 |
+-----------------+
SELECT 1
Time: 0.013s
avilpage@/tmp:avilpage> SELECT LOCALTIME AT TIME ZONE 'UTC';

+-----------------------+
| timezone              |
|-----------------------|
| 04:19:03.232132+00:00 |
+-----------------------+
SELECT 1
Time: 0.014s

对于UTC作为时区,它给出了正确的值。对于具有偏移量的utc,它无法正确计算偏移量。

avilpage@/tmp:avilpage> SELECT LOCALTIME AT TIME ZONE 'UTC+5:30';

+-----------------------+
| timezone              |
|-----------------------|
| 22:49:10.079737-05:30 |
+-----------------------+

avilpage@/tmp:avilpage> SELECT LOCALTIME AT TIME ZONE 'UTC-5:30';

+-----------------------+
| timezone              |
|-----------------------|
| 09:49:52.755688+05:30 |
+-----------------------+
SELECT 1
Time: 0.013s

如果使用名称而不是缩写名称,则它提供了正确的偏移量。

avilpage@/tmp:avilpage> SELECT LOCALTIME AT TIME ZONE 'Asia/Kolkata';

+-----------------------+
| timezone              |
|-----------------------|
| 09:50:00.742252+05:30 |
+-----------------------+
SELECT 1
Time: 0.014s

有没有一种方法可以仅使用utc和offset来获取某个时区的正确本地时间?

0 个答案:

没有答案