2016-09-02 1 views
-1

Я хочу преобразовать DATETIME из столбца в UNIX TIMESTAMP. Но дело в том, что эти даты в отдаленном будущем, такие как 2066-09-01 ... Вы можете попробовать эти простые запросы:SQL: Как преобразовать будущую дату в метку времени с помощью UNIX_TIMESTAMP()?

SELECT UNIX_TIMESTAMP('2016-09-03 09:00:00') возвращается 1472886000 -> ХОРОШИХ

SELECT UNIX_TIMESTAMP('2036-09-03 09:00:00') возвращается 2104038000 -> ХОРОШИХ

SELECT UNIX_TIMESTAMP('2066-09-03 09:00:00') возвращает 0 -> BAD! ЗАЧЕМ??

Любая идея? Любое обходное решение?

+0

Какая СУБД вы используете? –

ответ

0

Похоже РСУБД страдает от Y2038 проблемы: https://en.m.wikipedia.org/wiki/Year_2038_problem

Является ли это MySQL? У них есть ошибка об этом: https://dev.mysql.com/worklog/task/?id=1872

Предлагайте, если это возможно, использовать этот внешний SQL. PHP strtotime() и подобные функции на других языках могут хорошо сочетаться с форматом даты ISO в MySQL.

1

От Unixtimestamp.com:

Что происходит на 19 января 2038 года?

В этот день Unix Time Stamp перестает работать из-за 32-разрядного переполнения. До этого момента миллионы приложений должны были либо принять новое соглашение для отметки времени, либо быть перенесены в 64-битные системы, которые будут покупать временную метку «бит» больше времени.

Смежные вопросы