我正在尝试查询时间表,其中时间跨度(周期)为21到20,因此今天(2014年10月30日)是11月。
所以,2014年10月14日是十月。
2014-09-21和2014-10-20是一个时间跨度 2014-10-21和2014-11-20是一个时间跨度
该表只是存储时间表的日期:
id date hours
所以,我可以具体说:
SELECT * FROM rapoarte WHERE DATE(ziua) BETWEEN "2014-09-21" AND "2014-10-20"
但我无法弄清楚如何:
动态
答案 0 :(得分:2)
最简单的方法是进行日期算术。因此,对于十月,您将使用:
SELECT *
FROM rapoarte
WHERE month(DATE(ziua) - interval 20 day + interval 1 month) = 10
想法是减去20天并添加一个月。这似乎是报告月份的逻辑。
您可以将其添加为字段:
SELECT *,
date_format(month(DATE(ziua) - interval 20 day + interval 1 month), '%Y-%m') as ReportingMonth
FROM rapoarte
WHERE month(DATE(ziua) - interval 20 day + interval 1 month) = 10
编辑:
如果您想要此报告月份的数据:
WHERE month(DATE(ziua) - interval 20 day + interval 1 month) = month(DATE(now()) - interval 20 day + interval 1 month) and
year(DATE(ziua) - interval 20 day + interval 1 month) = year(DATE(now()) - interval 20 day + interval 1 month)