|
Непонятки с CURRENT_DATE, CURRENT_TIME
|
|||
---|---|---|---|
#18+
Выполняем Код: sql 1. 2. 3.
Получаем результат Код: plaintext 1. 2.
Но ещё больше меня удивило значение current_date_utc. Мы видим, что тип значения у него timestamp, а я ожидал получить date Ещё один непонянный результат Код: sql 1.
Получаем 10:00:00, т.е. 10 часов. В моём представлении CURRENT_TIMESTAMP и (CURRENT_TIMESTAMP at time zone 'utc) - это 2 различных представления одного момента времени. И я ожидал получить 0. Как по другому можно интерпретировать полученный результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 19:50 |
|
Непонятки с CURRENT_DATE, CURRENT_TIME
|
|||
---|---|---|---|
#18+
Kr_Yury Ещё один непонянный результат Код: sql 1.
Получаем 10:00:00, т.е. 10 часов. В моём представлении CURRENT_TIMESTAMP и (CURRENT_TIMESTAMP at time zone 'utc) - это 2 различных представления одного момента времени. И я ожидал получить 0. Как по другому можно интерпретировать полученный результат? Вам очень поможет для понимания функция pg_typeof чтобы понимать какой тип в какой ситуации образуется... в данном случае мы имеем select pg_typeof(CURRENT_TIMESTAMP at time zone 'utc'); pg_typeof ----------------------------- timestamp without time zone (т.е. тут уже нет информации о timezone). далее происходит следующее на самом деле select CURRENT_TIMESTAMP::timestamp without time zone - CURRENT_TIMESTAMP at time zone 'utc'; и информации от timezones тут уже нет.... Аналогично mboguk=# select pg_typeof(CURRENT_TIME); pg_typeof --------------------- time with time zone (1 row) mboguk=# select CURRENT_TIME; current_time ------------------- 18:58:23.30797+02 как у вас получился CURRENT_TIME без timezone мне не ясно... у вас какая версия базы то? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 20:00 |
|
Непонятки с CURRENT_DATE, CURRENT_TIME
|
|||
---|---|---|---|
#18+
Maxim Boguk, select pg_typeof(CURRENT_TIME); тоже возвращает pg_typeof ------------------- time with time zone Но CURRENT_TIME и CURRENT_TIME at time zone 'utc' показывает одинаковое значение. И здесь ошибки вероятно нет. Оба значения показываются для одной и той же time zone. Но есть такая хитрость: при выполнении из psql время показывается для time zone 'utc' , а при выполнении из DBeaver - для локальной time zone. Версии Postgres 10.10 и 11.2. Поведение на обеих версиях одинаковое ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 23:08 |
|
Непонятки с CURRENT_DATE, CURRENT_TIME
|
|||
---|---|---|---|
#18+
Kr_Yury, Так посмотрите что show timezone; в обоих случаях показывает. Требуемую ему timezone - выставляет клиент при соединении с базой (и там у разных клиентов разное понимание что ставить бывает). Т.е. timezone не что то жестко прибитое к серверу а то что клиент устанавливает при соединении, если клиент НИЧЕГО не установил - то используется серверная настройка. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 23:58 |
|
Непонятки с CURRENT_DATE, CURRENT_TIME
|
|||
---|---|---|---|
#18+
Maxim Boguk, да DBeaver подменяет параметром конфигурации timezone на локальную. Но получается, что timezone применяется только к типу time, а к timestamp не применяется. Как-то не логично. Спасибо, Maxim Boguk ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:24 |
|
Непонятки с CURRENT_DATE, CURRENT_TIME
|
|||
---|---|---|---|
#18+
Kr_Yury Maxim Boguk, да DBeaver подменяет параметром конфигурации timezone на локальную. Но получается, что timezone применяется только к типу time, а к timestamp не применяется. Как-то не логично. Спасибо, Maxim Boguk тип timestamp он timestamp WITHOUT TIMEZONE если с timezone надо то тип timestamptz (он же TIMESTAMP WITH TIMEZONE) -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:50 |
|
Непонятки с CURRENT_DATE, CURRENT_TIME
|
|||
---|---|---|---|
#18+
Kr_Yury Но получается, что timezone применяется только к типу time, а к timestamp не применяется. Как-то не логично Note The SQL standard requires that writing just timestamp be equivalent to timestamp without time zone, and PostgreSQL honors that behavior. https://www.postgresql.org/docs/current/datatype-datetime.html Да, разработчики postgresql тоже считают это нелогичным, но таков стандарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 17:12 |
|
Непонятки с CURRENT_DATE, CURRENT_TIME
|
|||
---|---|---|---|
#18+
Melkij Kr_Yury Но получается, что timezone применяется только к типу time, а к timestamp не применяется. Как-то не логично Note The SQL standard requires that writing just timestamp be equivalent to timestamp without time zone, and PostgreSQL honors that behavior. https://www.postgresql.org/docs/current/datatype-datetime.html Да, разработчики postgresql тоже считают это нелогичным, но таков стандарт. a TIMESTAMP value that is continuous , non-ambiguous , has exactly 60 seconds per minute and does not repeat values over the leap second . Другими словами TIME STAMP это абсолютная "временная метка" и недолжна быть подвержена каким либо скачкам локального времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 12:01 |
|
|
start [/forum/topic.php?fid=53&fpage=21&tid=1994396]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 176ms |
0 / 0 |