PostGreSQL: date_trunc () возвращает метку времени с часовым поясом при использовании на дату - PullRequest
0 голосов
/ 23 июня 2018

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

enter image description here

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

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

возвращает, что:

enter image description here

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

1 Ответ

0 голосов
/ 24 июня 2018

вы становитесь жертвой date beind, неявно приведенным к timestamp with thome zone, чтобы разрешить вызов функции.

date_trunc определен только для timestamp with time zone и timestamp входов.

+01 +02 и т. Д. Зависит от правил перехода на летнее время в вашем регионе.

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

 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...