mysql - 将 DATE 类型列的默认值设置为没有时间部分的当前日期?

标签 mysql constraints mysql-5.6

注意:问题是关于 DATE 类型,而不是 Datetime 或 Timestamp

如何更改日期数据类型的列以默认使用当前日期? 我看到了很多关于 datetime 的例子(有时间部分),但没有关于日期的例子。我试过:

ALTER TABLE `accounting` ALTER `accounting_date` 
  SET DEFAULT CURRENT_DATE;
ALTER TABLE `accounting` CHANGE `accounting_date` 
  `accounting_date` DATE NOT NULL DEFAULT CURRENT_DATE;

我还尝试了 CURDATE()NOW()CURRENT_DATE() ...

最佳答案

可能您无法在 mysql 中为“日期”数据类型设置默认值。您需要将类型更改为时间戳或日期时间。

你可以看看这个类似的问题。

Invalid default value for 'Date'

编辑:

在 5.6.5 版本中,可以在日期时间列上设置默认值,甚至可以创建一个在行更新时更新的列。类型定义:

CREATE TABLE foo (
    `creation_time`     DATETIME DEFAULT CURRENT_TIMESTAMP,
    `modification_time` DATETIME ON UPDATE CURRENT_TIMESTAMP
)

引用:http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available.html

关于mysql - 将 DATE 类型列的默认值设置为没有时间部分的当前日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28805705/

相关文章:

php - 需要帮助获取用户提交的值并从 PHP 表单生成唯一的 URL

java - 使用 choco 求解器求解方程

mysql - 将 Amazon RDS 实例从 MySQL 5.5 升级到 MySQL 5.6

mysql - SQL 连接 3 个具有空值的表

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 在 MySQL INSERT INTO 文本中添加换行符

mysql - 使用全文搜索搜索 500 万条记录

database - (PostgreSQL) "Advanced"检查约束问题

ios - 未计算 UITableViewCell 中的约束

mysql - Django db_index=True 迁移后不创建索引