Что работало для меня с Ubuntu 16.04, а php7 удаляло эту строку
fastcgi_split_path_info ^(.+\.php)(/.+)$;
После этого перестала загружаться php-файлы.
2018-11-01T00:00:00-07:00
является не a timestamp
(timestamp without time zone
) буквально, строго говоря. Это timestamptz
(timestamp with time zone
) литерал. Это корень всей боли в вашем вопросе. Неправильное приведение к timestamp
игнорирует смещение. Руководство Postgres:
В литерале, который был определен как
blockquote>timestamp without time zone
, PostgreSQL будет молча игнорировать любую индикацию часового пояса. Таким образом, результирующее значение получается из полей даты / времени во входном значении и не корректируется для часового пояса .Смелый акцент мой.
Использование
TO_TIMESTAMP()
не может спасти вас. Руководство Redshift:Форматы, включающие часовой пояс (
blockquote>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. Для получения дополнительной информации о настройке часового пояса сеанса см. часовой пояс .
BLOCKQUOTE>