2017-06-19 87 views
-1

这里是我的查询:SQL DATEADD(工作日,1,日期)似乎不起作用?

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年

+5

”dayofyear,day,and weekday return the same value。“ https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql;请参阅https://stackoverflow.com/questions/5471524/add-business-days-to-date-in-sql-without-loops –

回答

1

如果我正确地使用DATEADD由平日,我应该看到1月30日,而不是扬 28,对不对?

错误。在SQL Server中,weekday并不意味着不是周末的日子。这表示基于当前的datefirst设置,一周中的哪一天(1-7)是有问题的那一天。 “