Возвращает нуль для date_format, когда ввод пуст в MySQL - PullRequest
8 голосов
/ 07 апреля 2011

Я делаю что-то вроде этого:

SELECT date_format(mydate, '%d/%m/%Y') FROM xyz;

Когда mydate равен NULL, date_format возвращает 00/00/0000. Это правильно, но как я могу сделать так, чтобы он возвращал NULL, когда ввод NULL?

Ответы [ 4 ]

13 голосов
/ 07 апреля 2011
SELECT IF(mydate,date_format(mydate, '%d/%m/%Y'),NULL) FROM xyz;

Источник: http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

1 голос
/ 07 апреля 2011

Вы можете заключить это в IF -Клаузу, например так:

SELECT IF(mydate,DATE_FORMAT(mydate, '%d/%m/%Y'),NULL) FROM xyz;

Тем не менее, если ваша переменная mydate не является значением даты, запрос в вашем сообщении должен вернуть (NULL) в любом случае.

0 голосов
/ 07 апреля 2011
select case when isnull(mydate) then null else date_format(mydate, '%d/%m/%Y') end as mydate from xyz;
0 голосов
/ 07 апреля 2011
case 
    when date_format(mydate, '%d/%m/%Y') = 00/00/0000 then null
    else ///
end as mydate,
...