Как известно, в 2038 году будет такой момент, когда в типе данных int уже не получится хранить число секунд эпохи — с момента 1 января 1970 года. Проверить это можно SQL запросами. Не забудьте сделать резервную копию данных. Шутка 🙂
Вот так можно грубо проверить, что на указанную дату приходится переполнение типа signed int:
SELECT date_part('epoch',('2038-01-20'))::INT |
Вы получите ошибку «integer out of range».
С точностью до минуты я подобрал время переполнения типа (оговорка: при вычислении используется timestamptz, т.е. запросы корректны для моего часового пояса Europe/Moscow — для других надо подправлять количество часов при вычитании). Запрос
SELECT date_part('epoch',('2038-01-20')::timestamptz - INTERVAL '17 hour' - INTERVAL '46 minutes')::INT |
еще выдает число секунд, а вот запрос
SELECT date_part('epoch',('2038-01-20')::timestamptz - INTERVAL '17 hour' - INTERVAL '45 minutes')::INT |
уже опять-таки выдает ошибку «integer out of range».