MySQL неверная дата-ошибка значения для действительных дат - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть столбец отметки времени, и я получаю сообщение об ошибке при попытке ввести определенные даты и время.

Например 2013-03-31 02:13:11 и 2014-03-31 02:55:00 работают, но 2013-03-31 02:55:00 говорит:

SQL Error (1292): Incorrect datetime value

В чем может быть проблема?

1 Ответ

1 голос
/ 11 апреля 2019

Это может быть проблема перехода на летнее время, особенно если вы упомянули, что причиной возникновения проблемы является 2013-03-31 02:55:00 ... дата, когда большинство европейских стран начали наблюдать летнее время в 2013 году. Время в Центральной Европе было увеличено на единицу час в 2 часа ночи, что означает, что в этот день не было 02:55:00

Обратите внимание, что MySQL преобразует TIMESTAMP значения из текущего часового пояса в UTC для хранения, и именно здесь выдается ошибка:

SET time_zone = 'CET';
-- Central Europe Time in 2013: DST starts at 2am when clocks move forward to 3am
-- see https://www.timeanddate.com/news/time/europe-starts-dst-2013.html

INSERT INTO test(timestamp_col) VALUES('2013-03-31 01:59:59');
-- Affected rows: 1  Found rows: 0  Warnings: 0  Duration for 1 query: 0.078 sec.

INSERT INTO test(timestamp_col) VALUES('2013-03-31 02:00:00');
-- SQL Error (1292): Incorrect datetime value: '2013-03-31 02:00:00' for column 'timestamp_col' at row 1

INSERT INTO test(timestamp_col) VALUES('2013-03-31 03:00:00');
-- Affected rows: 1  Found rows: 0  Warnings: 0  Duration for 1 query: 0.063 sec.
...