MySQL IF与CONCAT和DATE_FORMAT

时间:2013-09-10 15:09:48

标签: mysql if-statement concat date-format

我有以下语句,它返回'label'的空值:

SELECT *,
IF (
    `date_to` IS NULL,
    CONCAT(DATE_FORMAT(`date_from`, '%D %M %Y'), ' ', `location`),
    CONCAT(DATE_FORMAT(`date_from`, '%D %M %Y'), ' - ', DATE_FORMAT(`date_to`, '%D %M %Y'), ' ', `location`)
) AS `label`
FROM `courses`
ORDER BY `date_from` ASC

date_fromdate_to列都是DATE类型,第二列可能包含默认值0000-00-00

知道可能导致它的原因吗?

1 个答案:

答案 0 :(得分:2)

DATE_FORMAT(cast('0000-00-00' as date), '%D %M %Y') returns NULL,因此整个CONCAT也将变为空。

也许您还应该将date_toIF条件中的值'0000-00-00'进行比较?