2015-11-17 4 views
0

Я разрабатываю свою первую схему базы данных postgres, и я сталкиваюсь с небольшой странностью с часовыми поясами по типу данных timestamptz.postgres timestamptz timezone wierdness

После создания таблицы и использования функции now() для ввода данных в столбец, я получаю 2015-11-17 12:10:05.764088-08. Я не понимаю, что означает «764088-08» для отметки часового пояса. Документации Postgres говорят, что это должно выглядеть примерно так:

'2004-10-19 10:23:54+02'

Я понимаю, второй формат часового пояса, но первые из них является большой загадкой для меня. Я просто что-то пропустил? Является ли функция now() не тем, что вы хотите использовать?

+0

Эти 764088 - это микросекунды. Отображается временная метка В часовом поясе UTC-08: 00. – Tometzky

+0

Временная метка находится в формате [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601). – fphilipe

ответ

0

Часть 05.764088 относится к текущему состоянию секунд. Он просто дает более точную точность и возвращает точные микросекунды (в данном случае 764088). -08 в конце концов, относится к часовому поясу:

Смещения часового пояса от UTC, измеренного в секундах. Положительные значения соответствуют часовым поясам к востоку от UTC, отрицательные значения к зонам к западу от UTC. (Технически, PostgreSQL использует UT1, потому что секунды прыжка не обработаны.)

Функция now() является традиционным PostgreSQL эквивалентно CURRENT_TIMESTAMP. Вы можете увидеть точные данные in the official documentation.

Смежные вопросы