2009-05-03 83 views
34

我在MySQL 5.x(使用PHP)上使用时间戳来记住事件时间。在开发过程中,我不得不用一个查询更新所有列中的内容。时间戳然后重置为当前时间。仅在创建时使用MySQL时间戳

如何仅在插入时更改时间戳,而不是更新或替换?

+1

其他人可能会回答这个问题:如果在数据库中进行手动编辑时使用TIMESTAMP;或者如果您有多个TIMESTAMP列并且不想触摸所有这些列, MySQL手册说将该列分配给自己。您明确地将该列设置为其当前值(即“updated_on = updated_on”),以使其不会被UPDATE更改。 – 2010-11-12 16:22:46

回答

65

Here's all you need to know。总之,虽然,我认为这应该这样做:

ALTER TABLE `mytable` 
CHANGE `mydatefield` `mydatefield` 
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
+0

谢谢!在这里“NOT NULL”部分不是我需要的。 – 2017-10-25 04:02:15

0
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

很好这里for time-stamp文档。

+0

我可能会错过一些东西,但我的表格是(而且)是这样定义的,但日期改变了。从mysql解释:'pur_time','timestamp','NO','','CURRENT_TIMESTAMP','' – Nir 2009-05-03 16:34:21

1

我建议对该列使用DATETIME。记录更新时不会更改。

对我来说,我使用TIMESTAMP来跟踪记录最后一次触摸的时间,尽管一般情况下我都避免使用它。