MySQL 1292日期时间值不正确

MySQL 1292日期时间值不正确,mysql,sql-timestamp,mysql-error-1292,Mysql,Sql Timestamp,Mysql Error 1292,当我试图在时间戳列中插入'2011/03/13 02:53:50.000000000'时,我遇到了这个错误。如果我把13号换成15号、14号、12号或11号,没问题。我也试过把/'改成-,但还是不行 我已经浏览了一些与此错误相关的其他线程,但似乎没有一个适用 我正在运行5.7.9版。您需要尝试以下操作: STR_TO_DATE( '2011/03/13 02:53:50', '%Y/%m/%d %H:%i:%s') 否则您必须使用破折号分隔符插入日期 '2011-03-13 02:53:50'

当我试图在时间戳列中插入'2011/03/13 02:53:50.000000000'时,我遇到了这个错误。如果我把13号换成15号、14号、12号或11号,没问题。我也试过把/'改成-,但还是不行

我已经浏览了一些与此错误相关的其他线程,但似乎没有一个适用

我正在运行5.7.9版。

您需要尝试以下操作:

STR_TO_DATE( '2011/03/13 02:53:50', '%Y/%m/%d %H:%i:%s')
否则您必须使用破折号分隔符插入日期

'2011-03-13 02:53:50' 

我认为在插入之前需要使用一些。或者在对MySQL进行查询之前,以适当的格式准备数据

微秒格式也是错误的:

DATETIME或TIMESTAMP值可以包含最高达微秒(6位)精度的尾部小数秒部分


更新:在我的本地主机上,我得到了相同版本的MySQL,它可以工作。 试图执行转换

select str_to_date("2011-03-13 02:53:50.000000", "%Y-%m-%d %H:%i:%s.%f") as `t`
并得到:

+----------------------------+
| t                          |
+----------------------------+
| 2011-03-13 02:53:50.000000 |
+----------------------------+
1 row in set (0.00 sec)
下面是一个例子,它证实了另一个版本的MySQL


我没有什么想法了,我认为这个问题与表结构中的“本地故障”或MySQL+OS的特定版本有关。

仍然不确定问题是什么,可能是CentOS和MySQL版本的组合。我将列更改为datatime(6),而不是时间戳(6),并且我能够成功导入所有数据。

我花了一段时间才弄明白这一点

问题是“2011-03-13 02:53:50”是非法的,因为夏令时在凌晨2点到3点之间切换,所以任何DST引入日凌晨2点到3点之间的所有时间值都是无效的。与“2016-03-13 02:32:21”等相同


将系统时区更改为不使用DST的时区,您会没事的。

看看这个。这会帮助您发现错误消息是1292不正确的日期时间值。@Cycleek,您能提供一些SQLfiddle片段来说明这一点吗?@Farside,这是我的,它似乎有效。奇怪吗?@CycleGeek,我的本地主机上安装了v.5.7.9,我没有发现任何问题。你的“显示变量,如‘sql_模式’”;中有什么内容?那么为什么,当我将一天改为15、14、12或11天时,它能工作吗?我也尝试过使用6位数字,但运气不好。@CycleGeek,插入日期后,您是否得到了正确的转换,然后您尝试重新选择它?我觉得字符串转换本身有问题是的,如果我插入'2011-03-12 02:53:50.000000'或'2011/03/12 02:53:50.000000',它工作正常。选择显示匹配的日期。13因为某种原因无法使用?@CycleGeek,尝试使用其他格式,这很简单。将斜杠替换为破折号,或使用STR_-TO_日期转换。这对你的情况会有帮助。时间戳值的范围为“1970-01-01 00:00:01.000000”到“2038-01-19 03:14:07.99999”。小数部分应始终与其余时间间隔一个小数点point@CycleGeek,我检查了一下,也尝试了SQLFiddle(),它可以工作。尝试转储数据库,看看有什么问题。@nik谢谢。我没有想到我准备的盒子被困在EDT里了。导入数千条带有时间戳的记录,并且看不到MySQL设置有任何错误,导致它拒绝看似随机的值。