Преобразование поля времени UTC из базы данных POSTGRE / SQL в SQL - PullRequest
5 голосов
/ 15 августа 2011

У меня проблема с базой данных.Я никогда не работал в PostgreSQL, и я хотел бы сделать выбор из поля даты и времени UTC и получить в качестве результата время и дату по Гринвичу.

На самом деле мой запрос таков: выберите dateheure из позиции Что должно быть в Postgresqlпросьба сделать то, что я хочу сделать ???

Большое спасибо Gwenael

Ответы [ 2 ]

12 голосов
/ 15 августа 2011

PostgreSQL имеет два типа datetime :

  • 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 конструкцию:

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 голос
/ 16 августа 2011

В другом сообщении Я использую ограничение CHECK(), чтобы вы сохраняли и получали UTC только из базы данных. Надеюсь, это полезно.

...