首页 > 解决方案 > 如何在 SQL 中为不同月份运行不同的日期范围

问题描述

我需要自动化报告的日期。用户每年运行四次报告。

Q1-jan-march- 运行 may1

Q2-Apr-Jun - 运行 Aug1

Q3-7-9 - 运行 Oct1

Q4-oct-dec - 运行 feb1

当用户在 5 月运行查询时,他应该得到 SELECT * FROM Table where DATE Between jan1 and march31 的结果。如何根据运行的月份编写不同的日期范围。

提前致谢。

标签: sqlsql-serverdatetimewhere-clausebetween

解决方案


您似乎想过滤上一季度。这是一种方法:

select *
from mytable
where date >= dateadd(qq, datediff(qq, 0, getdate()) - 1, 0)
  and date <  dateadd(qq, datediff(qq, 0, getdate()), 0)

这会根据当前日期动态计算上一季度的开始和结束。


推荐阅读