mysql - 定义MySQL中的默认日期值,类似于时间戳

标签 mysql datetime mysql-error-1064 ddl mysql-error-1067

我正在使用 MySQL(没有人是完美的)4.1 版,我习惯于定义一些这样的时间戳列:

ALTER TABLE foo ADD creation TIMESTAMP DEFAULT NOW() ;

我想做完全相同的事情,但是对于日期字段。原因是我不需要 TIMESTAMP 精度,并且由于 MySQL 中不存在功能索引,因此我无法快速访问具有给定日期的行(无论一天中的哪个时间)。所以我尝试了以下方法,但它不起作用:

ALTER TABLE foo ADD creation_date DATE DEFAULT CURDATE() ;
ERROR 1067 (42000): Invalid default value for 'creation_date'

甚至

ALTER TABLE foo ADD creation_date DATE DEFAULT DATE(NOW()) ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(now())' at line 1

这也不起作用。

有什么想法吗?

最佳答案

在 MySQL 中,默认值必须是常量。 不允许使用函数或表达式。

TIMESTAMP 类型异常(exception),对于该类型,CURRENT_TIMESTAMP 是有效的非常量默认值。

See 4.1 manual: Data Type Default Values

关于mysql - 定义MySQL中的默认日期值,类似于时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1198977/

相关文章:

php - 两个在一个网页中插入更新问题

java - MySQL 检查日期为 0000-00-00 00 :00:00? 的情况

MySQL View - 非法混合排序规则

mysql - MySQL 查询有字符限制吗?

mysql - Reader mysql 不断返回 null

java - java 时间 api 中的错误星期几

PHP文件无法输入部分代码

java - mysql如何找到一列的最大值并返回值?

mysql - MySQL中有什么机制来管理含有大量列的数据库表?

linux - 如何转换dd/mm/yy hh :mm:ss to yyyy-mm-ddThh:mm:ss using linux?