如何将(给定时区的)本地时间戳转换为UTC?

时间:2013-06-03 18:04:12

标签: postgresql

我正在使用多个时区可用的代码。我需要创建一个函数,它接受选定的本地时间戳和本地时区。函数的返回值应该是本地时间的UTC时间(给定本地时区的本地时间)。

我正在研究PostgreSQL 8.3

1 个答案:

答案 0 :(得分:3)

SELECT Now() AT TIME ZONE 'UTC';

对于给定的timestamp without time zone,这将在指定时区(在我的示例中为UTC)返回timestamp with time zone

来自PostgreSQL docs

SELECT TIMESTAMP '2001-02-16 20:38:40' AT TIME ZONE 'MST';
Result: 2001-02-16 19:38:40-08

SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'MST';
Result: 2001-02-16 18:38:40

您可以从pg_timezone_names获取时区列表:

select * from pg_timezone_names limit 5

name;abbrev;utc_offset;is_dst
----------------------
PRC;CST;08:00:00;f
Asia/Brunei;BNT;08:00:00;f
Asia/Ujung_Pandang;CIT;08:00:00;f
Asia/Ust-Nera;VLAT;11:00:00;f
Asia/Phnom_Penh;ICT;07:00:00;f