Як конвертувати unix час у PostgreSQL 'Timstamp без timezome?


17

У мене працює база даних PostgreSQL на сервері, який встановив часовий пояс у часовій зоні Індії (тобто UTC +5: 30)

У мене є деякі дані в таблиці, яка створена так:

CREATE TABLE "CLOUDDATA"
(
  "CD_Tm_Obs" timestamp without time zone,
  "CD_Avg_Cloud" double precision
)

Я хочу запитувати дані та отримувати значення протягом певного часу. Моє введення буде часовою міткою Unix (тобто секундами з 1 січня 1970 р.)

Єдиний спосіб перетворення часу UNIX в Timestamp я знайшов це: select to_timestamp(TRUNC(CAST(1395036000 AS bigint))). Але це створює часову позначку з часовим поясом. Мої дані є timestamp without time zone, тому я не отримую жодних результатів.

Як перетворити час Unix у Timstamp PostgreSQL без timezome?

Відповіді:


37

Ось пара підходів:

Я спростив ваш запит, як вам не потрібно TRUNC(), ні CAST().

SELECT to_timestamp(1395036000) AT TIME ZONE 'UTC';

SELECT timestamp '1970-01-01 00:00:00' + interval '1395036000 second';

Для довідок, більше інформації можна знайти за наступними посиланнями:


Другий фрагмент також працює на RedShift.
Джанлука Касаті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.