SQL设置日期戳

时间:2012-09-12 11:20:40

标签: mysql sql phpmyadmin

我现在在phpmyadmin,我正在尝试设置一个字段来标记插入数据时的当前日期。

现在我尝试将其设置为DATETIME类型,但这包括时间。我只想要约会。我还尝试将其设置为DATETIME,默认值为GETDATE()并保存,但它引发了错误:

#1067 - Invalid default value for 'upload_date' 

有人知道怎么做吗?

2 个答案:

答案 0 :(得分:5)

不幸的是,您无法将DEFAULT值设置为函数,它必须是常量值。一个例外CURRENT_TIMESTAMP,但它也会包含time部分:

column_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP

但是,您可以使用TRIGGER设置列的默认值。例如:

CREATE TRIGGER trigger_name BEFORE INSERT ON your_table
  FOR EACH ROW SET NEW.date_column = DATE(NOW());

另外,使用DATE()截断TIME的{​​{1}}部分。

答案 1 :(得分:0)

一个常见错误,我只是向您发送文档http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

  

数据类型规范中的DEFAULT值子句表示a   列的默认值。除了一个例外,默认值必须   是一个常数;它不能是一个功能或表达。 这意味着,   例如,您不能将日期列的默认值设置为   NOW()或CURRENT_DATE等函数的值。异常   是你可以指定CURRENT_TIMESTAMP作为a的默认值   TIMESTAMP列。请参见第11.1.5.5节“自动初始化和   更新TIMESTAMP“。

在doc中也是使用current_timestamp的例外 - 这需要你的列是TIMESTAMP列。