如何在MySQL中创建默认日期值作为当前日期的表?

问题描述 投票:0回答:1

有没有办法创建一个表,其中的字段默认为当前日期值而不是时间戳?

CREATE TABLE animal (
animal_id INT AUTO_INCREMENT PRIMARY KEY,
animal_name VARCHAR(50) NOT NULL,
animal_type VARCHAR(50) NOT NULL,
species VARCHAR(50) NOT NULL,
gender VARCHAR(10),
entry_date DATE DEFAULT CURRENT_DATE,
status VARCHAR(10) DEFAULT 'present' NOT NULL
);

我尝试使用 CURRENT_DATE 但出现此错误: #1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“CURRENT_DATE”附近使用的正确语法 状态 VARCHAR(10) DEFAULT 'present' NOT NULL )' 在第 7 行

mysql
1个回答
0
投票

当前版本的 mysql 允许任意自包含表达式,但必须将它们括在括号中:

DEFAULT (CURRENT_DATE)

也就是说,CURRENT_DATE 是当前会话时区的日期,因此不同的会话可能使用不同的默认值。我建议永远不要使用任何依赖于会话时区(现在、当前日期等)的函数。如果您希望该字段默认为某个特定时区的当前日期,请明确说明,其方式可能因会话而异。例如。美国太平洋时间:

DEFAULT (convert_tz(utc_timestamp,'+00:00','America/Los_Angeles'))
© www.soinside.com 2019 - 2024. All rights reserved.