MySQL的当前时间

时间:2014-08-30 04:03:06

标签: mysql sql

我有一个数据库表。其中一列,即列Time_NOW的类型为TIME。如果Time_NOW为null,那么无论何时查找该条目,我都需要该列条目为当前时间。

我在列now()中尝试了条目Time_NOW以获取空值。但是,它在插入该行时将其值设置为当前时间。 我需要的是从该行读取该值时的当前时间。

如何做到这一点?

我正在使用MySQL。

TIA

5 个答案:

答案 0 :(得分:1)

使用

Current_time

而不是

Now()

喜欢这个

Select coalesce(time_now,current_time) as time_now
From your_table

答案 1 :(得分:1)

无法修改列Time_NOW的定义以获取您描述的行为。要让SQL查询执行指定的操作(据我所知),您实际上需要修改查询。

您的表定义保持不变,列可以为空,例如

 `Time_NOW` TIME DEFAULT NULL

“访问”此列的SELECT语句需要从列中检索值,测试该值是否为NULL,并在不 NULL,或者当列为NULL时返回不同的表达式。

由于Time_NOW列的定义数据类型为TIME,因此您几乎肯定希望替换值具有相同的数据类型,因此我们希望该替换表达式返回{{1 (不是TIME,而不是DATETIME等)。

表达式TIMESTAMP将根据服务器时钟和客户端的时区返回当前时间(HH:MM:SS)。 (这不是唯一会返回当前时间的表达式;还有其他表达式将返回相同的值。)

条件测试(对于TIME(NOW())是否为NULL)可以通过几种不同的方式完成。例如,使用ANSI标准Time_NOW表达式,例如:

CASE

或使用MySQL SELECT CASE WHEN t.Time_NOW IS NULL THEN TIME(NOW()) ELSE t.Time_NOW END AS Time_NOW FROM mytable t 函数:

IF()

或使用SELECT IF(t.Time_NOW IS NOT NULL,t.Time_NOW,TIME(NOW())) AS Time_NOW 函数:

ISNULL()

或使用SELECT IFNULL(t.Time_NOW,TIME(NOW())) AS Time_NOW 功能:

COALESCE()

答案 2 :(得分:0)

尝试SELECT COALESCE(Time_NOW, now())

答案 3 :(得分:0)

您可以使用CURRENT_TIMESTAMP

Select COALESCE(Time_NOW, CURRENT_TIMESTAMP)

以下是示例演示:SQL Fiddle

答案 4 :(得分:0)

 create table test (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP)