【问题标题】:MySQL IF with CONCAT AND DATE_FORMATMySQL IF 与 CONCAT 和 DATE_FORMAT
【发布时间】:2013-09-14 09:06:31
【问题描述】:

我有以下语句,它为“标签”返回空值:

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

知道是什么原因造成的吗?

【问题讨论】:

  • empty 对您意味着什么?
  • 空我的意思是没有与索引关联的值

标签: mysql if-statement concat date-format


【解决方案1】:

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

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

【讨论】:

  • IF 语句实际上评估正常,因为我已经使用硬编码值对其进行了测试,并且它根据“IS NULL”条件返回正确的值 - 如 mysql 日期字段中的 '0000-00- 00' 实际上等于 NULL。正如您从我的示例中看到的那样 - 如果它是“NULL”,那么 date_to 字段不是等式的一部分 - 因此在这种情况下它不会真正返回 NULL。
猜你喜欢
  • 1970-01-01
  • 2013-01-09
  • 2013-01-10
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多