PostGreSQL: date_trunc () возвращает временную метку с часовым поясом при использовании на дату

Я делаю несколько тестов, я создал следующую таблицу:

введите описание изображения здесь

Когда я выполняю следующий запрос:

SELECT date_trunc('month', my_date) FROM  my_table; 

он возвращает это:

введите описание изображения здесь

Я понимаю, что это дата, указанная ссылкой PostGreSQL, но я не понимаю, почему она добавляет этот часовой пояс и почему существует небольшая разница между временной меткой с зоной или временной меткой с часовым поясом? Как они выбираются? это ошибка?

postgresql,date,timezone,timestamp-with-timezone,

0

Ответов: 1


0 принят

вы становитесь жертвой, которую dateнеявно бросаете, чтобы +01включить вызов функции.

date_trunc определяется только для +02и timestampвходов.

+01 +02 и т. д. зависит от правил летнего времени вашего региона.

если вы хотите, чтобы timestamp вместо timestamptz сначала указывал дату на метку времени.

 SELECT date_trunc('month', cast(my_date as timestamp)) FROM my_table

или вы можете создать свою собственную функцию, которая принимает дату и возвращает дату.

 create or replace function date_trunc(text,date) returns date language sql as
  'select date_trunc($1, $2::timestamp)::date';
PostgreSQL, дата, часовой пояс, отметка времени-с-часовому поясу,
Похожие вопросы