inC*_*rol 33 mysql date default-value
这里非常直截了当的问题,我认为这应该有效,但事实并非如此.为什么不呢?
CREATE TABLE INVOICE(
INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE
)
Run Code Online (Sandbox Code Playgroud)
zer*_*kms 55
它不起作用,因为它不受支持
该
DEFAULT
子句指定列的默认值.除了一个例外,默认值必须是常量; 它不能是一个功能或表达.这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()
或CURRENT_DATE
.例外情况是您可以指定列CURRENT_TIMESTAMP
的默认值TIMESTAMP
http://dev.mysql.com/doc/refman/5.5/en/create-table.html
小智 22
将您的日期列声明为NOT NULL,但没有默认值.然后添加此触发器:
USE `ddb`;
DELIMITER $$
CREATE TRIGGER `default_date` BEFORE INSERT ON `dtable` FOR EACH ROW
if ( isnull(new.query_date) ) then
set new.query_date=curdate();
end if;
$$
delimiter ;
Run Code Online (Sandbox Code Playgroud)
Amo*_*ong 21
根据此文档,从 MySQL 8.0.13 开始,您将能够指定:
CREATE TABLE INVOICE(
INVOICEDATE DATE DEFAULT (CURRENT_DATE)
)
Run Code Online (Sandbox Code Playgroud)
不幸的是,截至今天,该版本尚未发布。您可以在此处查看最新更新。
小智 12
create table the_easy_way(
capture_ts DATETIME DEFAULT CURRENT_TIMESTAMP,
capture_dt DATE AS (DATE(capture_ts))
)
Run Code Online (Sandbox Code Playgroud)
(MySQL 5.7)
t1f*_*t1f 12
目前,MySQL 8
您可以将以下内容设置为一DATE
列:
在 中MySQL Workbench
,在Default
列旁边的字段中,写下:(curdate())
如果你只是curdate()
它会失败。在开始和结束时,您需要额外的(
和)
。
awo*_*man 10
我有当前最新版本的MySQL:8.0.20
所以我的表名是visit,我的列名是curdate。
alter table visit modify curdate date not null default (current_date);
Run Code Online (Sandbox Code Playgroud)
这将写入不带时间戳的默认日期值。
归档时间: |
|
查看次数: |
85333 次 |
最近记录: |