sql日期特定年份的季节

时间:2017-02-16 14:40:38

标签: sql sql-server date

我正在尝试创建一个报告,该报告为我在特定日期的周,月和季度发生的事件提供编号。
几周和几个月我都能这么做,但是季度问题。我想要特定年份的四分之一的结果 - 如下面的例子中仅2016年。

例如

declare @date date set @date = '2016/02/30'    

select case_id, event_date  
from #total  
WHERE datepart(quarter, event_DATE) = datepart(quarter, @date)   
order by 2   

当我使用此代码时,它不仅给出了2016年的结果,还给出了2015,2014(往年)的同一季度的结果。

case_id         event_date  
1234        1986-02-06  
5567        2014-01-04   
3456       2015-03-11     
6378       2016-02-23    
4789        2016-02-06  
6782        2016-01-04   
2346       2016-03-11     
9098       2016-02-23  

我想要的是:仅适用于2016年而非前几年。

case_id         event_date  
4789        2016-02-06  
6782        2016-01-04   
2346       2016-03-11     
9098       2016-02-23  

2 个答案:

答案 0 :(得分:2)

您可以尝试添加年度条件:

[...] AND datepart(year, event_DATE) = datepart(year, @date)

您的查询看起来像

SELECT case_id, event_date  
FROM #total  
WHERE datepart(quarter, event_DATE) = datepart(quarter, @date)
AND datepart(year, event_DATE) = datepart(year, @date)
ORDER BY 2   

答案 1 :(得分:0)

  `RRULE:FREQ=MONTHLY;UNTIL=20170630T000000;BYDAY=1FR`