Как я могу предотвратить сброс даты и времени в Redshift INSERT datetime?

Что работало для меня с Ubuntu 16.04, а php7 удаляло эту строку

fastcgi_split_path_info ^(.+\.php)(/.+)$;

После этого перестала загружаться php-файлы.

1
задан a_horse_with_no_name 5 March 2019 в 06:38
поделиться

1 ответ

2018-11-01T00:00:00-07:00 является не a timestamp (timestamp without time zone) буквально, строго говоря. Это timestamptz (timestamp with time zone) литерал. Это корень всей боли в вашем вопросе. Неправильное приведение к timestamp игнорирует смещение. Руководство Postgres:

В литерале, который был определен как timestamp without time zone, PostgreSQL будет молча игнорировать любую индикацию часового пояса. Таким образом, результирующее значение получается из полей даты / времени во входном значении и не корректируется для часового пояса .

Смелый акцент мой.

Использование TO_TIMESTAMP() не может спасти вас. Руководство Redshift:

Форматы, включающие часовой пояс (TZ, tz или OF), не поддерживаются в качестве входных данных.

(То же самое верно и в Postgres.)

Решение

Приведение к timestamptz (или использование столбца этого типа для начала), остальные должны упасть на месте:

SELECT cast('2018-11-01T00:00:00-07:00' AS timestamptz);

Или:

SELECT '2018-11-01T00:00:00-07:00'::timestamptz;

Руководство по кастингу в Redshift.

Когда фактическому timestamptz назначается столбец timestamp, он автоматически преобразуется в соответствии с текущей настройкой timezone сеанса. Если вы хотите другой целевой часовой пояс, используйте конструкцию AT TIME ZONE. Подробности:

Соответствующий ответ для Postgres, но обработка меток времени в Redshift (хотя отличается много других аспектов!) то же самое. Руководство по Redshift:

При преобразовании DATE или TIMESTAMP в TIMESTAMPTZ предполагается, что DATE или TIMESTAMP используют текущий часовой пояс сеанса. Часовой пояс сеанса по умолчанию является UTC. Для получения дополнительной информации о настройке часового пояса сеанса см. часовой пояс .

0
ответ дан Erwin Brandstetter 5 March 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: