LINUX.ORG.RU

Сравнение дат в postgre и timezone

 ,


0

2

Есть столбец column1, тип timestamp(6) WITHOUT time ZONE. Будет ли результат следующего запроса зависеть от текущего часового пояса сервера?

select * from table1 where date_trunc('day', column1) = date_trunc('day', current_timestamp);
Т.е. работает ли date_trunc в utc или местном времени?

★★★★★
Ответ на: комментарий от AnDoR

Быстрее проверить, чем писать пост сюда.

Да не знаю. Вот, скажем, такой тест:

set time zone '+13';
select date_trunc('day', timestamp '2016-02-17 01:00:00') = date_trunc('day', current_timestamp);
Результат false.
set time zone '0';
select date_trunc('day', timestamp '2016-02-17 01:00:00') = date_trunc('day', current_timestamp);
Результат true.

Судя по нему результат зависит от пояса. Но например здесь человек уверенно заявляет, что не зависит: http://compgroups.net/comp.databases.postgresql/date_trunc-and-timezone/199534

orm-i-auga ★★★★★
() автор топика
Ответ на: комментарий от drsm

Ладно, теперь результат одинаковый. Что опять же подтверждает, что зависит от локального пояса. Однако мне тут кроме приведенной ссылки доказывают что мол не должен зависеть. Вот и пытаюсь разобраться.

orm-i-auga ★★★★★
() автор топика
Ответ на: комментарий от orm-i-auga

первый вызов дейт_транк возвращает таймстемп (НЕ ДАТУ) без таймзоны, второй таймстемп с таймзоной, потом ты их сравниваешь, и тот который без таймзоны приводится к текущей зоне сервера.

те результат дейт_транк от таймзоны не зависит, от таймзоны зависит результат сравнения

drsm ★★
()
Ответ на: комментарий от drsm

Ок, это для теста. Т.е. для исходного вопроса — результат запроса зависит от локального пояса?

orm-i-auga ★★★★★
() автор топика
Ответ на: комментарий от orm-i-auga

Будет ли результат следующего запроса зависеть от текущего часового пояса сервера?

да будет, тк сравниваются два разных таймстемпа (с таймзоной и без).

Т.е. работает ли date_trunc в utc или местном времени?

есть две версии date_trunc:

http://www.postgresql.org/docs/current/static/functions-datetime.html

All the functions and operators described below that take time or timestamp inputs actually come in two variants: one that takes time with time zone or timestamp with time zone, and one that takes time without time zone or timestamp without time zone. For brevity, these variants are not shown separately.

drsm ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.