如何修改MySQL查询以仅获取负数值的days结果?
解决MySQL查询仅返回负数值结果的问题
嗨,这问题很好解决,你只需要给查询加个过滤条件,筛选出days为负数的记录就行。不过要注意一个小细节:MySQL里WHERE子句是在SELECT计算别名之前执行的,所以不能直接用days这个别名在WHERE里,这里给你两种可行的方法:
方法1:在WHERE中重复计算表达式
直接把计算days的表达式放到WHERE里,判断它小于0:
SELECT MAX(datediff(now(), date_ship)) AS days, date_ship FROM table WHERE datediff(now(), date_ship) < 0;
方法2:使用HAVING子句(支持别名)
HAVING是在SELECT之后执行的,所以可以直接用days别名来过滤:
SELECT MAX(datediff(now(), date_ship)) AS days, date_ship FROM table HAVING days < 0;
执行上面任意一个查询后,就能得到你想要的结果:
+------------+------+ | date_ship | days | +------------+------+ | 2019-07-15 | -6 | | 2019-07-12 | -3 | +------------+------+
简单说,核心就是筛选出datediff(now(), date_ship) < 0的记录——这个结果为负,意味着date_ship的日期在当前时间之后,也就是还没到发货时间的记录~
内容的提问来源于stack exchange,提问作者cloude
相关产品推荐
相关产品推荐

