今天遇到了一個問題,跟大家分享一下。
有這樣一個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);
或者直接從代碼中把> ?的這個部分傳遞過來。