我试图在phpmyadmin上设置一个列,只显示“时间”。如何将默认值设置为当前时间?只有时间,不包括日期。当前的时间戳不起作用,我也尝试过now(),但没有成功。我看了文件,但没有找到任何具体的资料。
k97glaaz1#
create table test1234235 (foo int, ts timestamp default now()); insert into test1234235 (foo) values(1); select * from test1234235;
qybjjes12#
问题文档链接摘录:
default子句中指定的默认值可以是文字常量或表达式。除了一个例外,将表达式默认值括在括号内,以区别于文本常量默认值。[…]
除了一个例外,default子句中指定的默认值必须是一个文本常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为函数的值,例如now()或current\u date。例外情况是,对于timestamp和datetime列,可以将current\u timestamp指定为默认值。因此,如果支持,请使用括号:
CREATE TABLE foo ( what_time TIME NOT NULL DEFAULT (CURTIME()) );
演示
toiithl63#
无法为时间或日期列设置默认值。切换到时间戳列并使用 date(t_stamp) 去约会。或者 time(t_stamp) 去争取时间。
date(t_stamp)
time(t_stamp)
3条答案
按热度按时间k97glaaz1#
qybjjes12#
问题文档链接摘录:
mysql 8.0.13的显式默认值处理
default子句中指定的默认值可以是文字常量或表达式。除了一个例外,将表达式默认值括在括号内,以区别于文本常量默认值。
[…]
mysql 8.0.13之前显式默认值的处理
除了一个例外,default子句中指定的默认值必须是一个文本常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为函数的值,例如now()或current\u date。例外情况是,对于timestamp和datetime列,可以将current\u timestamp指定为默认值。
因此,如果支持,请使用括号:
演示
toiithl63#
无法为时间或日期列设置默认值。切换到时间戳列并使用
date(t_stamp)
去约会。或者time(t_stamp)
去争取时间。