首页 > 解决方案 > mysql:concat 不接受年份作为 select if() 中的第一个表达式

问题描述

我正在使用 xampp 和 mariadb (10.1.28)。在我的 yii2 项目中,我写了一个查询:

$offer  = Offer::find()
                ->select('`offer`.*, If( ( Concat(Year(`offer`.`date`),"-'.$utc_date.'")>`offer`.`date` ) ,(CONCAT(Year(`offer`.`date`),"-'.$utc_date.'")) , (Concat(Year(`offer`.`date`)+1,"-'.$utc_date.'")) ) AS `start_date`')->all();

当 if() 的结果为 false 时,查询按预期执行。但如果为真,则会引发错误

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取在 'AS 附近使用的正确语法start_date

当我用“-'.$utc_date.'”启动 concat 时,它可以工作,但我不想要这个输出。

标签: phpmysqlyii2

解决方案


推荐阅读