代码之家  ›  专栏  ›  技术社区  ›  Glyn

MySQL 5.7.14-日期间隔<NOW()的CASE语句引发错误

  •  0
  • Glyn  · 技术社区  · 4 年前

    我有一个MySQL select,它在CASE语句中抛出了一个错误。

    该部分可以是五个值之一。我想测试今天的日期(现在)是否小于此人的出生日期加上x年。dob列是日期类型。

    SELECT ca_id, cad_id, section, dob, 
        CASE 
            WHEN section LIKE '%Joey%' AND ((dob, INTERVAL 6 YEAR) < NOW()) THEN '1' 
            WHEN section LIKE '%Joey%' AND ((dob, INTERVAL 7 YEAR) < NOW()) THEN '2' 
            WHEN section LIKE '%Joey%' THEN '3' 
        ELSE '0' 
        END AS milestoneBracket
    

    错误是:

    GetAttention:com中的SQLException。mysql。jdbc。例外。jdbc4。MySQLSyntaxErrorException:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以了解可使用的正确语法。')<现在();1号线没有

    0 回复  |  直到 4 年前
        1
  •  1
  •   nacho    4 年前

    你缺少的是一个 Date Add SQL查询中的函数调用

    SELECT ca_id, cad_id, section, dob, 
        CASE
            WHEN section LIKE '%Joey%' AND (DATE_ADD(dob, INTERVAL 6 YEAR) < NOW()) THEN '1'
            WHEN section LIKE '%Joey%' AND (DATE_ADD(dob, INTERVAL 7 YEAR) < NOW()) THEN '2' 
            WHEN section LIKE '%Joey%' THEN '3' 
        ELSE '0' 
        END AS milestoneBracket