mysqli_query语法错误求助:SQL语句DATE_ADD用法报错定位疑问
排查MySQL语法错误的解决方案
我来帮你揪出这个SQL语法错误的问题所在,主要有三个地方踩坑了:
- 误用SQL Server函数:
getdate()是SQL Server专属的函数,MySQL中获取当前日期应该用CURDATE()(仅返回日期部分)或者NOW()(返回日期+时间),可以根据你的RunDate字段类型选择合适的函数。 DATE_ADD语法完全错误:MySQL的DATE_ADD正确格式是DATE_ADD(目标日期, INTERVAL 数值 时间单位),你把参数顺序完全搞反了。如果是要往前推N天,用DATE_SUB会更直观,比如DATE_SUB(CURDATE(), INTERVAL $dataRange DAY),当然也可以用DATE_ADD加负数实现同样效果。- GROUP BY子句拼写错误:你在SELECT里写的是
BriefDescription,但GROUP BY里写成了BreifDescription(少了一个字母e),这不仅会触发语法错误,还会影响分组逻辑的正确性。
修正后的代码如下(这里用DATE_SUB的写法更清晰易懂):
$db_query = mysqli_query($link, "SELECT Name, BriefDescription, SUM(Runs) as Runs FROM BaseTable WHERE RunDate >= DATE_SUB(CURDATE(), INTERVAL $dataRange DAY) AND RunDate <= CURDATE() GROUP BY Name, BriefDescription");
额外提醒:如果你的RunDate字段是包含时间的DATETIME类型,RunDate <= CURDATE()其实只会匹配到当天0点之前的数据,要是想包含当天所有时间的记录,可以把条件改成RunDate < DATE_ADD(CURDATE(), INTERVAL 1 DAY)。
内容的提问来源于stack exchange,提问作者user20929302
相关产品推荐
相关产品推荐

