Странная ошибка, возвращаемая date_trunc () в Redshift - PullRequest
0 голосов
/ 25 января 2019

Итак, я столкнулся со следующим странным поведением в базе данных Redshift.

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

select date_trunc('month', now()) -- returns 2019-01-01 00:00:00+00

Наоборот, этот запрос:

select date_trunc('month', now())
from table

возвращает следующую ошибку

ОШИБКА: указанные типы или функции (по одному на каждое сообщение INFO) не поддерживаются в таблицах Redshift.

Сообщение INFO отсутствует, но, очевидно, проблема связана с date_trunc()так как это единственная используемая функция.

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

Я также взглянул на this на случай, если date_trunc() еще не полностью поддерживается, но я не могу найти какую-либо ссылку.

Есть ли что-то, чего мне не хватает?Есть обходной путь?

1 Ответ

0 голосов
/ 25 января 2019

now () - функция только для узла-лидера. это означает, что это работает, если вы не используете таблицу.

Вместо now () вы можете использовать current_timestamp

, например

select date_trunc('month', current_timestamp)
from table;

Это будет хорошо работать.

см. https://docs.aws.amazon.com/redshift/latest/dg/Date_functions_header.html

(справа внизу)

...