使用BETWEEN运算符的SQL日期查询报错,求原因排查及解决方法
问题分析与解决办法
嘿,我一眼就发现你SQL语句里的问题啦!
你报错的核心原因是**BETWEEN子句缺少了要判断的日期字段**——数据库根本不知道你要筛选哪个字段落在指定的日期范围内,所以才会抛出语法错误。
错误语句的问题点
你的原语句:
SELECT * FROM checkout WHERE id = 10 AND (BETWEEN '2017-12-10' AND '2017-12-30')
这里的(BETWEEN ...)部分没有指定字段,属于语法不完整,数据库无法识别你的筛选逻辑。
修正后的正确语句
假设你的表中存储日期的字段名为checkout_date(你需要替换成自己表中实际的日期字段名,比如create_time、transaction_date等),修正后的语句应该是:
SELECT * FROM checkout WHERE id = 10 AND checkout_date BETWEEN '2017-12-10' AND '2017-12-30';
额外小提示
BETWEEN是包含边界值的,也就是说上面的语句会包含2017-12-10和2017-12-30这两个日期的记录- 如果你的日期字段包含时间(比如
2017-12-30 23:59:59),用BETWEEN可能会漏掉当天晚些时候的记录,这种情况可以改用checkout_date >= '2017-12-10' AND checkout_date < '2017-12-31'来更精准筛选
内容的提问来源于stack exchange,提问作者json




