如何COALESCE不同的日期类型

时间:2018-04-25 22:46:54

标签: mysql date

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

@Barmar - 不,我无法重现SQLFiddle中的错误,我真正打破了Java的架构和值。

<强>解决

我不得不深入研究如何构建表并找到正确的模式。这就是我在DB中真正拥有的东西(尽管PHPStorm显示&#34; 0000-00-00&#34;作为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