我有一个时间戳列,尝试输入一些特定的日期和时间时出现错误。
例如2013-03-31 02:13:11
和2014-03-31 02:55:00
有效,但是2013-03-31 02:55:00
说:
SQL Error (1292): Incorrect datetime value
可能是什么问题?
答案 0 :(得分:1)
这可能是夏令时问题,尤其是当您提到引起问题的日期是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.