php - 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 时,它可以工作,但我不想要这个输出。
解决方案
推荐阅读
- android - 无法为 org.jetbrains.kotlin.gradle.plugin.KaptExtension 类型的对象获取未知属性“增量”
- arm - 使用 PMU 计算 ARM 上的刻度
- spring-tools-4 - 在 STS 4.0 中忽略未知属性支持缺失
- python - 如何按变量对对象进行分组?
- java - 循环通过特定的小部件
- python - 这是按需设置属性的好习惯(如果在尝试获取属性时不存在)?
- reactjs - 你试图重定向到你当前在 React.js 中的同一条路线
- reactjs - Commonly API call for different components in ReactJS Fetch
- python - 读取大型二进制文件(超过 500 MB)的最快方法?
- javascript - 将图像复制到剪贴板并将图像粘贴到文档编写器时图像变灰