MySQL:尝试在时间戳中插入值会引发错误

时间:2012-02-19 22:56:50

标签: mysql timestamp

我有一个包含此列的表格:

  

last_modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

看起来我无法插入带有自定义时间戳的行,我收到此错误:

  

日期时间值不正确:第11行第'last_modified'列的'1145868501'

我正在尝试使用来自另一个表的数据填充此表,其他表只有一个creation_time字段,这是DATETIME所以我使用UNIX_TIMESTAMP(creation_time)来填充时间戳。

我认为带有“DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP”的timestamp列阻止我插入自己的东西,对吗?如果是,官方文件在哪里,以及最佳解决方案是什么?首先创建一个简单的时间戳,然后在插入数据后更改表格?

谢谢!

编辑:因为人们建议我不要使用UNIX_TIMESTAMP,我不得不说我不想在开头使用它,但是我遇到了这样的错误: 日期时间值不正确:“2010-03-28 02:15:51”列为'last_modified' 所以我认为我必须插入一个“真正的”时间戳...

3 个答案:

答案 0 :(得分:2)

您可以明确地在TIMESTAMP列中插入值。阅读:TIMESTAMP Properties

  

自动更新TIMESTAMP列(如果有)将自动更新为当前时间戳,此行中任何其他列的值将从其当前值更改。如果所有其他列都设置为其当前值,则TIMESTAMP列不会更改。如果TIMESTAMP列明确分配了NULL以外的值,则自动更新不适用。


<强>更新

呵呵,错误的发生是因为 - 好 - '2010-03-28 02:15:51'没有日期时间!这是夏令时间隙(通常在三月的某一天出现,在02:00 - 03:0003:00 - 04:00之间。

请参阅:Daylight Saving Time解释。

答案 1 :(得分:1)

您正在尝试将长整数放入日期时间字段中。这不起作用。移除对UNIX_TIMESTAMP()的调用,它应该有效。

MySQL TIMESTAMP类型几乎与DATETIME相同;它只是有一些额外的自动更新魔法。就SELECT和UPDATE而言,它是DATETIME

答案 2 :(得分:0)

如果该列始终是自动更新的,则可以从实体中删除属性,获取器和设置器。 这样做,它将在所有查询中被忽略。