我有一个包含此列的表格:
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' 所以我认为我必须插入一个“真正的”时间戳...答案 0 :(得分:2)
您可以明确地在TIMESTAMP
列中插入值。阅读:TIMESTAMP Properties
自动更新TIMESTAMP列(如果有)将自动更新为当前时间戳,此行中任何其他列的值将从其当前值更改。如果所有其他列都设置为其当前值,则TIMESTAMP列不会更改。如果TIMESTAMP列明确分配了NULL以外的值,则自动更新不适用。
<强>更新强>
呵呵,错误的发生是因为 - 好 - '2010-03-28 02:15:51'
没有日期时间!这是夏令时间隙(通常在三月的某一天出现,在02:00 - 03:00
或03:00 - 04:00
之间。
请参阅:Daylight Saving Time解释。
答案 1 :(得分:1)
您正在尝试将长整数放入日期时间字段中。这不起作用。移除对UNIX_TIMESTAMP()
的调用,它应该有效。
MySQL TIMESTAMP
类型几乎与DATETIME
相同;它只是有一些额外的自动更新魔法。就SELECT和UPDATE而言,它是DATETIME
。
答案 2 :(得分:0)
如果该列始终是自动更新的,则可以从实体中删除属性,获取器和设置器。 这样做,它将在所有查询中被忽略。