SQL - 查询当前季度的事件数据

时间:2011-11-13 23:33:17

标签: sql sql-server-2005

我有一个课程日历事件表如下(为简单起见,仅显示几条记录):

calendarItemID   classID   startDate   startTime   endTime
----------------------------------------------------------
1                1         2011-11-24  7pm         9pm
2                2         2011-11-02  7pm         9pm
3                1         2011-11-25  7pm         9pm 

我需要一个返回UPCOMING QUARTER(不是当前季度)课程的查询。是否有一个SQL函数可以提供帮助和/或这是一个计算当前季度的日期并查看StartDate是否适合这些日期的情况。如果可能的话,我正在寻找最优雅的方式。

提前致谢! 保罗

2 个答案:

答案 0 :(得分:0)

创建一个名为“说Quarters”的表,其中包含一个有用的ID,例如YYYYQQ,以及一个开始和结束日期,然后它就是一个简单的连接。

答案 1 :(得分:0)

直截了当,但进展缓慢:

WHERE DATEPART(qq,startDate) = DATEADD(qq, 1,GETDATE()) AND YEAR(startDate) = 
YEAR(DATEADD(qq, 1,GETDATE()))

慢一点我的意思是即使你有一个索引(startDate)它也不会被使用。

更好的解决方案是在下一季度获得start_date和end_date。我可以看到很多方法。例如,您可以创建2个标量UDF,分别返回start_date和end_date。您还可以创建1个表值函数,该函数返回包含2列的1行,然后将其加入。最后,您可以创建一个查找表并手动输入未来几年的开始/结束日期。