MySQL选择动态日期范围

时间:2018-11-05 16:19:43

标签: mysql sql datetime select

我有一个datetime列,我想选择前2个完整月(当前为9月和10月)中的所有行。手动将这个查询编写为:

where date_column between '2018-09-01' and '2018-10-31'

但是如何以编程方式执行此操作,以使结束日期始终正确?我在想

where date_column between concat(substr(now() - INTERVAL 2 month, 1, 7), '-01') and concat(substr(now() - INTERVAL 1 month, 1, 7), '-31')

但是31不适用于11月,2月等。

1 个答案:

答案 0 :(得分:2)

您可以将日期设置为格式,而仅将日期硬编码为1:

date_column BETWEEN
            DATE_FORMAT(NOW() - INTERVAL 2 MONTH, '%Y-%m-01') AND
            DATE_FORMAT(NOW(), '%Y-%m-01')