我使用以下内容计算下一个日期,但这可能会返回非工作日。
dateadd(day, 365, nullif(last_service, '01/01/1900')) as [next_service]
例如last_service
为07.03.2014
,next_service
为07.03.2015
即星期六。
如何避免这种情况,只返回工作日?
感谢您的帮助和指导。
答案 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