我正在使用多个时区可用的代码。我需要创建一个函数,它接受选定的本地时间戳和本地时区。函数的返回值应该是本地时间的UTC时间(给定本地时区的本地时间)。
我正在研究PostgreSQL 8.3
答案 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