在MySQL中选择上个月的订单

时间:2016-10-18 08:01:46

标签: mysql sql

我必须编写一个查询,从表Order(id,.......,order_date)中选择上个月的订单。

假设今天的日期是4月4日。我会选择3月1日至3月31日或3月4日至4月4日的订单吗?

编辑: 第一个查询:

SELECT * from Order where order_date between sysdate() and sysdate - INTERVAL 1 Month

第二个查询:

     SELECT * from Order where order_date between (Last_day(sysdate()) - INETRVAL 1 MONTH) 
and ((Last_day(sysdate()) + INTERVAL 1 DAY) - INETRVAL 2 MONTH))

(Last_day(sysdate()) - INETRVAL 1 MONTH)给出了3月30日

((Last_day(sysdate()) + INTERVAL 1 DAY) - INETRVAL 2 MONTH))给出了3月1日

1 个答案:

答案 0 :(得分:2)

“上个月”通常指今天之前一个月的整个期间。因此,如果今天是4月4日,那么上个月是

 >= 1st March and < 1st April

E.g。

Select * from orders
Where order_date >= '2016-03-01' 
and order_date < '2016-04-01'

注意我建议在日期范围之间避免。另请注意,23:59:59的时间不是一天的结束,并且最新版本的mysql确实支持亚秒级时间精度。