Как мне объединить разные типы дат - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь использовать 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 голосов
/ 26 апреля 2018

@ Barmar - Нет, я не могу воспроизвести ошибку в SQLFiddle, схема и значения, которые у меня действительно есть, нарушают их Java.

Решено

Мне пришлось копатьглубже в том, как таблица была построена и найти правильную схему.Это то, что у меня действительно есть в БД (хотя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...