2017-06-19 92 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)是有問題的那一天。 「