我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql 将date字段默认值设置为CURRENT_DATE

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql 将date字段默认值设置为CURRENT_DATE

我们是否可以在mysql中,将Date字段的默认值设置为CURRENT_DATE(当前日期)?

答案是8.0之前不可以,8.0.13之后可以。

比如在5.7版本中使用如下sql创建表,将会提示语法错误:

CREATE TABLE `t_order` (  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',  `create_time` date DEFAULT (curdate()),  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

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 '(curdate()), PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4' at line 3

官方文档中,有如下描述:

 

With one exception, the default value specified in a DEFAULT clause must be a literal constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE. The exception is that, for TIMESTAMP and DATETIME columns, you can specify CURRENT_TIMESTAMP as the default. See Section 11.2.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”.

文档地址:https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html

Date字段不能指定默认值now()或者CURRENT_DATE,但是我们可以使用TIMESTAMP或者DATETIME字段,指定默认值为CURRENT_TIMESTAMP。

但是从8.0.13版本开始可以指定DATE的默认值为的CURRENT_DATE。

需要注意的是指定CURRENT_DATE为默认值时,需要用括号() 包裹住CURRENT_DATE,但是timestamp或者datetime字段则不需要。

例如,

CREATE TABLE t (d DATETIME DEFAULT CURRENT_TIMESTAMP);

这是合法的。

然后CURRENT_DATE需要用括号包裹。

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

因为default子句中指定的默认值通常是常量或者表达式。但是,需要将表达式默认值括在圆括号内,以区别常量默认值。

 

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.

例如:

CREATE TABLE t1 (  -- literal defaults  i INT         DEFAULT 0,  c VARCHAR(10) DEFAULT '',  -- expression defaults  f FLOAT       DEFAULT (RAND() * RAND()),  b BINARY(16)  DEFAULT (UUID_TO_BIN(UUID())),  d DATE        DEFAULT (CURRENT_DATE + INTERVAL 1 YEAR),  p POINT       DEFAULT (Point(0,0)),  j JSON        DEFAULT (JSON_ARRAY()));

总结

mysql中,8.0.13版本之后的允许将Date字段的默认值设置为CURRENT_DATE(当前日期),但是之前的版本则不允许。设置CURRENT_DATE默认值,需要将其包裹在圆括号内,以区分常量默认值,否则将报语法错误。

参考文档: https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html https://stackoverflow.com/questions/20461030/current-date-curdate-not-working-as-default-date-value/54119983#54119983

 

点个“赞 or 在看” 你最好看!

喜欢,就关注我吧!

 

来源地址:https://blog.csdn.net/qq_35462323/article/details/131290506

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql 将date字段默认值设置为CURRENT_DATE

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql如何设置字段默认值

在MySQL中,可以使用DEFAULT关键字来设置字段的默认值。在创建表时,可以通过DEFAULT关键字为字段指定默认值,例如:CREATE TABLE users (id INT PRIMARY KEY,username VARCHAR
mysql如何设置字段默认值
2024-04-09

如何设置MySQL的字段默认值

本篇文章给大家分享的是有关如何设置MySQL的字段默认值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1.默认值相关操作我们可以用 DEFAULT 关键字来定义默认值,默认值
2023-06-06

mysql如何给字段设置默认值

在创建表时,可以在字段定义中使用DEFAULT关键字来设置默认值。例如:CREATE TABLE table_name (column1 INT DEFAULT 0,column2 VARCHAR(50) DEFAULT 'de
mysql如何给字段设置默认值
2024-04-09

MySQL 字段默认值该如何设置

前言: 在 MySQL 中,我们可以为表字段设置默认值,在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值。关于默认值,有些知识还是需要了解的,本篇文章我们一起来学习下字段默认值相关知识。 1.默认值相关
2022-05-17

MySQL表字段时间设置默认值

应用场景在数据表中,要记录的每条数据是什么时候创建的,不需要应用程序去特意记录,而是由数据库获取当前时间自动记录创建时间。在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意记录,而由数据库获取当前时间自动记录修改时间。在数据库
2022-05-22

mysql怎么添加字段设置默认值

在MySQL中,可以使用ALTER TABLE语句来添加字段并设置默认值。例如,假设我们有一个名为users的表,现在想要向这个表中添加一个名为status的字段,并设置默认值为1,我们可以使用以下SQL语句:ALTER TABLE u
mysql怎么添加字段设置默认值
2024-04-09

navicat怎么设置字段默认值

要设置字段的默认值,可以按照以下步骤在Navicat中进行操作:1. 在Navicat中打开数据库连接,并选择要设置默认值的表。2. 在表的字段列表中,找到需要设置默认值的字段,并右键点击字段,选择"修改列"选项。3. 在"修改列"对话框中
2023-10-11

sqlserver怎么设置字段默认值

在SQL Server中,可以使用`DEFAULT`关键字来设置字段的默认值。例如,假设我们有一个名为`users`的表,其中有一个名为`age`的字段,我们想要将`age`字段的默认值设置为`18`,可以使用以下语法:```sqlCREA
2023-09-16

sqlserver字段怎么设置默认值

在SQL Server中,可以使用DEFAULT约束来设置默认值。以下是设置默认值的步骤:1、在创建表时,可以在字段定义中使用DEFAULT关键字来设置默认值。例如:CREATE TABLE Employees (ID INT PRIM
sqlserver字段怎么设置默认值
2024-04-09

mysql怎么新增字段并设置默认值

要向MySQL表中添加新字段并设置默认值,可以使用ALTER TABLE语句。例如,如果要向名为"users"的表中添加一个名为"age"的新字段并设置默认值为30,可以执行以下SQL语句:ALTER TABLE usersADD C
mysql怎么新增字段并设置默认值
2024-04-09

mysql字段默认值如何设置比较好

设置MySQL字段的默认值要根据具体的业务需求和数据类型来决定。以下是设置MySQL字段默认值的几个常见做法:对于数值型字段,可以设置为0或NULL,具体根据业务需求来决定。如果字段表示计数器或者统计值,可以设置为0;如果字段表示可选的数据
2023-10-23

access如何设置字段的默认值

在Access中,可以通过设置字段的默认值来指定该字段在每次插入新记录时的默认值。以下是在Access中设置字段的默认值的步骤:1. 打开Access数据库,并打开要设置默认值的表。2. 在该表中,选择要设置默认值的字段。3. 在上方的“字
2023-10-11

mysql设置字段默认值的方法是什么

在MySQL中,可以使用ALTER TABLE语句来设置字段的默认值。具体步骤如下:打开MySQL命令行或者MySQL客户端工具。连接到目标数据库。使用ALTER TABLE语句来修改表结构并设置字段的默认值。语法如下:ALTER TAB
mysql设置字段默认值的方法是什么
2024-02-29

sql中怎么设置字段的默认值

在 sql 中设置字段默认值的方法有:1. 使用 default 关键字后跟常量或表达式;2. 使用 constraint 关键字和 default 选项;3. 使用特定数据库的语法,如 mysql 的 current_timestamp(
sql中怎么设置字段的默认值
2024-05-15

编程热搜

目录