今天遇到了一个问题,跟大家分享一下。
有这样一个sql:
select * from order where created > now() - 259200
目的是为了查询三天内的订单, 理解上259200是秒数,转化为72个小时,也就是3天。
但是事与愿违。 mysql中时间算减法居然不是这么算的。他是这么算的:
now() - X00 X<99, 那么就是减去X分钟。
now() - X0000, 那么就是减去多少小时,但是当减去的小时数超过今天的时候那么最少只能到当前天的00:00:00.这样就造成了问题。
那么怎么解决这个问题呢?可以使用mysql自带的时间函数,如下:
select * from order where created > date_add(now(), interval -1 day);
或者直接从代码中把> ?的这个部分传递过来。

本文介绍了一个关于MySQL查询特定时间段记录的问题及解决方案。原本希望通过简单的减法实现时间筛选,但发现MySQL对此有不同的处理方式。文中提供了两种正确的方法来实现查询目标:一是使用MySQL内置的时间函数date_add,二是直接在应用层进行时间计算。
174万+

被折叠的 条评论
为什么被折叠?



