mysql - 在 mysql8 中,为什么 DATE DEFAULT CURRENT_DATE 需要在 CURRENT_DATE 周围加括号?

标签 mysql sql default create-table

从 mysql8 开始,这是合法的:

CREATE TABLE t (d DATETIME DEFAULT CURRENT_TIMESTAMP);

这是合法的:

CREATE TABLE t (d DATE DEFAULT (CURRENT_DATE));

那么为什么这是非法的?

CREATE TABLE t (d DATE DEFAULT CURRENT_DATE);

导致

Error in query (1064): Syntax error near 'CURRENT_DATE)' at line 1

最佳答案

引用this for more information .

这很可能是您在问题中所指的内容:

The default value specified in a DEFAULT clause can be a literal constant or an expression. With one exception, enclose expression default values within parentheses to distinguish them from literal constant default values.

[...]

The exception is that, for TIMESTAMP and DATETIME columns, you can specify the CURRENT_TIMESTAMP function as the default, without enclosing parentheses.

关于mysql - 在 mysql8 中,为什么 DATE DEFAULT CURRENT_DATE 需要在 CURRENT_DATE 周围加括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69880064/

相关文章:

php - MySQL : reset id start from 1 if day change

mysql - 如何在一个数据库表中查找某个字段的值与另一表中的值不同的行

mysql - 修改子查询中的日期会减慢执行速度

mysql - 如何在 MySQL 中将现有列更改为默认插入时的当前时间?

vb.net - 在 GridView 上强制使用默认按钮

PHP 和 SQL - 将 unix 时间戳与 MySQL CURDATE() 进行比较

php - 具有不同str的表迭代

android - 如何在使用真实设备时通过代码启动默认主页启动器?

mysql - 如何将 RDS 与 phpmyadmin 连接 - AWS

php - 使用单独的列将 php 导出到 excel