在TSQL中将日期移至星期一

Int*_*eer 1 sql t-sql sql-server

我需要在TSQL中创建一个函数,如果传递的日期只是星期六或星期日,它会将日期移动到星期一.

例如:

  • 2012年5月6日应该返回5/7/2012
  • 2012年5月12日应该返回2012年5月14日

如果日期不是星期六或星期日,请返回输入日期

zim*_*nen 8

如果日期是星期六或星期日,这将给你星期一; 否则,它会给你你提供的日期.

DECLARE @Date DATETIME; SET @Date = GETDATE();

SELECT
    CASE (@@DATEFIRST + DATEPART(dw, @Date)) % 7
        WHEN 0 THEN DATEADD(day, 2, @Date) -- Saturday
        WHEN 1 THEN DATEADD(day, 1, @Date) -- Sunday
        ELSE @Date
    END AS Weekday
Run Code Online (Sandbox Code Playgroud)

编辑:包括Conrad Frix对@@ DATEFIRST问题的解决方案.

  • -1如果@@ DATEFIRST的值不是您预期的值,则会中断 (3认同)