关于postgresql:在SQL中从POSTGRESQL数据库转换UTC时间字段

Converting UTC time field from a POSTGRE/SQL database in SQL

我的数据库出了问题。
我从未习惯在PostgreSQL中工作,我想从UTC日期时间字段中选择并获得GMT日期时间作为结果。

其实我的要求是:从位置选择dateheure
什么应该是Postgresql请求做我想做的事情???

非常感谢
Gwenael


PostgreSQL确实有两种日期时间类型:

  • timestamp without time zone(默认隐式timestamp)
  • timestamp with time zone

我猜你有UTC日期时间表(没有时区类型):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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构造:

1
2
3
4
5
6
SET TIME ZONE 'UTC';
SELECT datetime AT TIME ZONE 'GMT-5' FROM datetimetest;
           timezone            
-------------------------------
 2011-08-15 10:04:06.507166+00
(1 ROW)


在另一篇文章中,我使用CHECK()约束来确保您只存储和接收数据库中的UTC。 希望它有用。