TIMESTAMP和DATE之间的行为差​​异

时间:2014-05-20 13:41:08

标签: mysql date datetime

我有一个表有两个TIMESTAMP列(Creation_Date和Edit_date),它们自动填充INSERT(两列都获得CURRENT_TIMESTAMP)和UPDATE(只有Edit_date列被更改)

此操作由以下代码完成:

  

... CreationDate时间戳NOT NULL DEFAULT' 0000-00-00 00:00:00',   EditDate时间戳NOT NOT DEFAULT CURRENT_TIMESTAMP ON UPDATE   CURRENT_TIMESTAMP,......

我需要将类型从TIMESTAMP更改为DATE并尝试:

...
`CREATED_DATE` date NOT NULL DEFAULT '0000-00-00',
`EDITED_DATE` date NOT NULL DEFAULT CURRENT_DATE ON UPDATE CURRENT_DATE,
...

我怎样才能获得相同的行为。任何回复都将不胜感激。

1 个答案:

答案 0 :(得分:1)

除非您使用的是mysql 5.6.5,否则不可能 唯一的选项是可用的,直到5.6.5使用字段类型作为时间戳,然后设置默认值不是常量。

  

数据类型规范中的DEFAULT值子句表示a   列的默认值。除了一个例外,默认值必须   是一个常数;它不能是一个功能或表达。这意味着,   例如,您不能将日期列的默认值设置为   NOW()或CURRENT_DATE等函数的值。例外   是你可以指定CURRENT_TIMESTAMP作为a的默认值   TIMESTAMP

如果您使用的是mysql 5.6.5,则可以为DATETIME数据类型

设置此行为

http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html