将postgresql中的UTC时区转换为EST(本地时间)

Sub*_*esh 32 postgresql timezone

我是PostgreSQL的新手,我想知道是否有一种直接的方法可以使用函数将表中的时间戳值转换为不同的时区.就我而言,它是UTC到EST.

这些是我需要转换为EST的值(不只是一个值,而是表中的所有值)

date
-------------------
2015-10-24 16:38:46
2016-01-19 18:27:00
2016-01-24 16:14:34
2016-02-09 23:05:49
2016-02-11 20:46:26
Run Code Online (Sandbox Code Playgroud)

Ric*_*ton 38

在伦敦,我们目前比UTC早1小时.所以 - 如果我把你的时区没有时间戳并说它是UTC,那么我将打印出我当地的时区.

richardh=> SELECT ((timestamp '2015-10-24 16:38:46') AT TIME ZONE 'UTC');
        timezone        
------------------------
 2015-10-24 17:38:46+01
(1 row)
Run Code Online (Sandbox Code Playgroud)

但你想要的"EST"似乎在美洲的某个地方,从返回的价值来判断.如果需要,可以将表达式包装在一个小的SQL函数中.

richardh=> SELECT ((timestamp '2015-10-24 16:38:46') AT TIME ZONE 'UTC') AT TIME ZONE 'EST';
      timezone       
---------------------
 2015-10-24 11:38:46
(1 row)
Run Code Online (Sandbox Code Playgroud)

编辑:如何在查询中执行此操作

SELECT ((stored_timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'EST') AS local_timestamp
FROM my_table;
Run Code Online (Sandbox Code Playgroud)

如果这类事情导致您出现问题,您可能希望获得有关SQL的入门书籍.


Kev*_* Li 14

同样执行

SELECT '2015-10-24 16:38:46'::timestamp AT time zone 'EST';

timezone
------------------------
 2015-10-24 21:38:46+00
(1 row)
Run Code Online (Sandbox Code Playgroud)


Yas*_*chi 7

如果您在访问您的区域时遇到问题,您也可以简单地通过您的区域间隔。将时间戳从 IST 转换为 UTC。

SELECT '2020-12-14 06:38:46'::timestamp AT time zone INTERVAL '+05:30';

timezone
------------------------
2015-10-24 11:38:46+00
(1 row)
Run Code Online (Sandbox Code Playgroud)

将时间戳从 UTC 转换为 IST。

SELECT '2020-12-14 06:38:46'::timestamp AT time zone INTERVAL '-05:30';

timezone
------------------------
2020-12-14 12:08:46+00
(1 row)
Run Code Online (Sandbox Code Playgroud)


Lea*_*tro 5

我通常将所有内容保留在 UTC 中,并在需要显示时进行转换。我使用类似的东西:

SELECT my_date_utc AT time zone 'utc' at time zone 'est' From ....
Run Code Online (Sandbox Code Playgroud)