SQL日期筛选条件不生效问题求助
问题分析与解决方案
嘿,我一眼就发现导致筛选失效的原因啦!你的SQL查询里日期范围的条件逻辑完全写反了,这才让筛选功能没起作用。
你当前的条件是:
transactionDate >= '2018-05-29' AND transactionDate <= '2018-04-29'
这个逻辑要求日期同时满足「大于等于2018年5月29日」和「小于等于2018年4月29日」——这在现实中是不可能的,自然不会返回任何符合条件的数据。
修正后的查询语句
只需要调换两个日期的位置,让范围逻辑合理即可:
SELECT * FROM transactionList WHERE transactionDate >= '2018-04-29' AND transactionDate <= '2018-05-29' LIMIT 20 OFFSET 0
额外优化建议
- 如果你的
transactionDate是带时间的DATETIME类型,想要包含2018-05-29当天的所有交易,可以把结束条件改成transactionDate < '2018-05-30',这样能避免漏掉当天23:59:59左右的交易; - 也可以用
BETWEEN简化范围写法,效果和上面的条件一致:transactionDate BETWEEN '2018-04-29' AND '2018-05-29' - 确认
transactionDate字段的数据类型是DATE/DATETIME,如果是字符串类型,需要先转换为日期类型再比较(比如MySQL用STR_TO_DATE(transactionDate, '%Y-%m-%d'),SQL Server用CAST(transactionDate AS DATE))。
内容的提问来源于stack exchange,提问作者Ankita Singh
相关产品推荐
相关产品推荐

