当前时间作为Mysql中“TIME”的默认值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当前时间作为Mysql中“TIME”的默认值相关的知识,希望对你有一定的参考价值。

我试图将phpmyadmin上的一列设置为“TIME”。如何将默认值设置为当前时间?只有时间,没有日期。

CURRENT_TIMESTAMP不起作用,我也尝试过now()但没有成功。我看过documentation,但没有找到任何具体的信息。

答案

无法为TIME或DATE列设置默认值。切换到TIMESTAMP列并使用date(t_stamp)来获取日期。或者time(t_stamp)来得到时间。

另一答案

摘自问题中的documentation link

mysql 8.0.13开始处理显式默认值

DEFAULT子句中指定的默认值可以是文字常量或表达式。除了一个例外,将表达式默认值括在括号内,以将它们与文字常量默认值区分开来。

[…]

在MySQL 8.0.13之前处理显式默认值

除了一个例外,DEFAULT子句中指定的默认值必须是文字常量;它不能是一个功能或表达。这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()或CURRENT_DATE。例外情况是,对于TIMESTAMP和DATETIME列,您可以将CURRENT_TIMESTAMP指定为默认值。

因此,在支持时,使用括号:

CREATE TABLE foo (
    what_time TIME NOT NULL DEFAULT (CURTIME())
);

Demo

另一答案
create table test1234235 (foo int, ts timestamp default now());
insert into test1234235 (foo) values(1);
select * from test1234235;

以上是关于当前时间作为Mysql中“TIME”的默认值的主要内容,如果未能解决你的问题,请参考以下文章

如何在mysql中实现将当前的时间作为建表时的表名

数据库mysql中,想建立一个默认值是系统当前时间的字段,那么这个字段的类型必须是timestam

关于设置MySQL中create_time和update_time默认值和实时更新

time库的time.time()的函数作用

mysql查询语句如何将默认值设置为当前时间

mysql中如何设置默认时间为当前时间?