我的数据库出了问题。 我从未习惯在PostgreSQL中工作,我想从UTC日期时间字段中选择并获得GMT日期时间。
其实我的要求是:从位置选择dateheure 什么应该是Postgresql请求做我想做的事情???
非常感谢 Gwenael
答案 0 :(得分:12)
PostgreSQL确实有两个datetime types:
timestamp without time zone
(默认隐式timestamp
)timestamp with time zone
我猜你有UTC日期时间表(没有时区类型):
CREATE TEMP TABLE datetimetest
(
datetime timestamp
);
\d datetimetest
Table "pg_temp_1.datetimetest"
Column | Type | Modifiers
----------+-----------------------------+-----------
datetime | timestamp without time zone |
INSERT INTO datetimetest SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC';
SELECT datetime FROM datetimetest;
datetime
----------------------------
2011-08-15 15:04:06.507166
(1 row)
要在某个时区获取日期时间,您可以使用AT TIME ZONE
construct:
SET TIME ZONE 'UTC';
SELECT datetime AT TIME ZONE 'GMT-5' FROM datetimetest;
timezone
-------------------------------
2011-08-15 10:04:06.507166+00
(1 row)
答案 1 :(得分:1)
In a different post我使用CHECK()
约束来确保您只存储和接收数据库中的UTC
。希望它有用。