今天遇到了一个问题,跟大家分享一下。
有这样一个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);
或者直接从代码中把> ?的这个部分传递过来。