使用dateadd返回工作日

时间:2014-12-30 16:25:59

标签: sql dateadd

我使用以下内容计算下一个日期,但这可能会返回非工作日。

dateadd(day, 365, nullif(last_service, '01/01/1900')) as [next_service]

例如last_service07.03.2014next_service07.03.2015即星期六。

如何避免这种情况,只返回工作日?

感谢您的帮助和指导。

1 个答案:

答案 0 :(得分:6)

我建议建立一个日历表。由于节假日和其他政策不同,下一个工作日对每个人都不一样,加入日历表快速而干净。有许多资源可以帮助您创建日历表,这里有一个:

http://www.sqlservercentral.com/blogs/dwainsql/2014/03/30/calendar-tables-in-t-sql/

用法可能有所不同:

SELECT a.*,b.NextBusinessDay AS next_service
FROM YourTable a
JOIN tlkp_Calendar b
 ON DATEADD(year,1,a.last_service) = b.CalendarDate

或者,如果您将额外的一年加入日历表:

SELECT a.*,b.Next_Service 
FROM YourTable a
JOIN tlkp_Calendar b
 ON a.last_service = b.CalendarDate