以指定的间隔查询数据

时间:2014-10-30 12:00:32

标签: mysql sql

我正在尝试查询时间表,其中时间跨度(周期)为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"

但我无法弄清楚如何:

  • 如何通过此间隔查询1年(或更长)
  • 我如何查询本月?

动态

1 个答案:

答案 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)