SQL DATEADD(工作日,1,日期)似乎不起作用?

时间:2017-06-19 15:51:39

标签: sql-server sql-server-2008 dateadd weekday

这是我的问题:

SELECT  ID AS 'securityid'
      , date
      , DATEADD(DW, 1, adate) AS 'lagged_date_v2'
      , DATEADD(DAY, 1, adate) AS 'lagged_date_v1'
      , aclose AS 'previous_close'
FROM    mytable
WHERE   adate BETWEEN '20170101 09:00' AND '20170630 18:00' AND
        ID = 100056;

以下是上述代码的输出:

Outputs image

我将结果与工作日的DATEADD进行了比较,并返回相同的结果。

adate只是典型的日期,我们可以告诉Jan 28, 2017是星期六。但是,在此行中,lagged_date_v1lagged_date_v2都会返回Jan 28。如果我在工作日之前正确使用DATEADD,我应该看到Jan 30而不是Jan 28,对吗?

我的sql server版本是2008.

1 个答案:

答案 0 :(得分:2)

  

如果我在工作日正确使用DATEADD,我应该看Jan 30而不是Jan   28,对吧?

错误。在SQL Server中,weekday并不意味着周末不是天。这意味着根据当前datefirst设置,哪一天(1-7)是相关日期。