Неверное значение даты и времени, если TIMESTAMP находится слишком далеко в будущем в MySQL - PullRequest
1 голос
/ 06 августа 2020

Я установил базу данных mysql, и каждый раз, когда я пытаюсь вставить метку времени в таблицу, я сталкиваюсь со странной ошибкой: Incorrect datetime value: '2117-11-20 06:04:35' for column 'NOT_VALID_AFTER_DATE' at row 1

Я пробовал разные значения и удивительно некоторые значения с точно таким же форматом допустимы:

  • 1969-11-20 06:04:35: ошибка выше

  • 1970-11- 20 06:04:35: вставить ОК

  • 2020-11-20 06:04:35: вставить ОК

  • 2037-11- 20 06:04:35: вставить ОК

  • 2038-11-20 06:04:35: ошибка выше

Не понимаю почему дата станет недействительной после определенного года. Я прочитал немного документации, и, похоже, в ней не говорится о таком ограничении.

Кто-нибудь знает?

Спасибо за помощь,

1 Ответ

1 голос
/ 06 августа 2020

Читали ли вы эту документацию: https://dev.mysql.com/doc/refman/8.0/en/datetime.html

Тип данных TIMESTAMP используется для значений, содержащих как дату, так и время. TIMESTAMP имеет диапазон от '1970-01-01 00:00:01' UT C до '2038-01-19 03:14:07' UT C.

Это потому что значение хранится как 32-битное целое число без знака. Целое число - это количество секунд с эпохи UNIX, то есть 1970-01-01 00:00:01. Максимальное значение составляет 2 32 -1 секунд, что приводит к большему значению отметки времени, упомянутому в документации.

Если вам нужны даты за пределами этого диапазона, используйте DATETIME. См. Дополнительную информацию на странице руководства, на которую я указал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...