我必须编写一个查询,从表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日
答案 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确实支持亚秒级时间精度。