首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL上的当前时间

问MySQL上的当前时间
EN

Stack Overflow用户
提问于 2014-08-30 12:03:06
回答 5查看 180关注 0票数 0

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

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

如何做到这一点?

我使用的是MySQL。

提亚

EN

回答 5

Stack Overflow用户

发布于 2014-08-30 12:10:04

使用

代码语言:javascript
复制
Current_time

而不是

代码语言:javascript
复制
Now()

像这样

代码语言:javascript
复制
Select coalesce(time_now,current_time) as time_now
From your_table
票数 1
EN

Stack Overflow用户

发布于 2014-08-30 12:18:34

没有办法修改列Time_NOW的定义来获得您所描述的行为。要让SQL查询执行指定的操作(据我所知),您实际上需要修改该查询。

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

代码语言:javascript
复制
 `Time_NOW` TIME DEFAULT NULL

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

因为Time_NOW列是用TIME数据类型定义的,所以您几乎肯定希望替换值具有相同的数据类型,所以我们希望这个替代表达式返回TIME (不是DATETIME,也不是TIMESTAMP,等等)。

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

条件测试(对于Time_NOW是否为空)可以通过几种不同的方式来完成。例如,使用美国国家标准协会标准的CASE表达式,例如:

代码语言:javascript
复制
SELECT CASE WHEN t.Time_NOW IS NULL THEN TIME(NOW()) ELSE t.Time_NOW END AS Time_NOW 
  FROM mytable t

或者,使用MySQL IF()函数:

代码语言:javascript
复制
SELECT IF(t.Time_NOW IS NOT NULL,t.Time_NOW,TIME(NOW())) AS Time_NOW

或者,使用ISNULL()函数:

代码语言:javascript
复制
SELECT IFNULL(t.Time_NOW,TIME(NOW())) AS Time_NOW

或者使用COALESCE()函数:

代码语言:javascript
复制
SELECT COALESCE(t.Time_NOW,TIME(NOW())) AS Time_NOW
票数 1
EN

Stack Overflow用户

发布于 2014-08-30 12:07:33

试试SELECT COALESCE(Time_NOW, now())

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25578897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档