【发布时间】:2017-02-16 14:40:38
【问题描述】:
我正在尝试创建一个报告,为我提供在特定日期的周、月和季度发生的事件的编号。
我已经能够这样做了好几个星期和几个月,但是季度有问题。我想要该特定年份的季度的结果 - 就像下面的示例中的 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
【问题讨论】:
-
您还需要匹配
DatePart(year, …)。 Q1等每年都会出现。 -
虽然你一般都想avoid functions in your
whereclause。建立一个日期表和join。 -
感谢您的编辑。
-
@Richard 你能更清楚一点吗?谢谢
标签: sql sql-server date