我想用 COALESCE() 以获得最低的 NULL 默认为的日期 NOW() 从下表:
COALESCE()
NULL
NOW()
date1 (timestamp) | date2 (date) | date3 (timestamp) <null> <null> 2015-02-04 21:29:05
我尝试的查询是:
SELECT coalesce(date1, timestamp(date2), date3, now()) as edited FROM backupDB
xwmevbvl1#
@不,我不能重现SQLFIDLE中的错误,我真正拥有的模式和值破坏了它们的java。解决了的我必须深入研究表是如何构建的,并找到正确的模式。这是我在db中真正拥有的(尽管phpstorm将“0000-00-00”显示为 NULL ):
CREATE TABLE backupDB ( date1 TIMESTAMP NULL, date2 DATE DEFAULT '0000-00-00', date3 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP); INSERT INTO backupDB (date1, date2, date3) VALUES (NULL, '0000-00-00', '2015-02-04 21:29:05');
因此,必要的查询看起来更像这样:(请随意批评和改进)
SELECT coalesce(date1, if(date2= '0000-00-00', null, timestamp(date2)), date3, now()) as edited FROM backupDB
1条答案
按热度按时间xwmevbvl1#
@不,我不能重现SQLFIDLE中的错误,我真正拥有的模式和值破坏了它们的java。
解决了的
我必须深入研究表是如何构建的,并找到正确的模式。这是我在db中真正拥有的(尽管phpstorm将“0000-00-00”显示为
NULL
):因此,必要的查询看起来更像这样:(请随意批评和改进)