2017-06-19 19 views
-1

は私のクエリです:SQL DATEADD(平日、1日)が動作していないようですか?ここ

Outputs image

私は日によっておよび曜日によってDATEADDに結果を比較すると、それは同じ結果を返します。ここでは

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; 

は、上記のコードの出力があります。

adateは、ほんの典型的な日付です。Jan 28, 2017は土曜日です。ただし、この行ではlagged_date_v1lagged_date_v2の両方がJan 28と返されます。平日までにDATEADDを正しく使用した場合は、Jan 28の代わりにJan 30が表示されます。

私のSQL Serverのバージョンは、私が正しく平日でDATEADDを使用する場合は、2008年

+5

"dayofyear、day、およびweekdayは同じ値を返します。" 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

が、私は右、1月30日の代わりに月 28が表示されるはずですか?

間違っています。 SQL Serverのweekdayは、週末でない日数を意味するものではありません。現在のdatefirst設定に基づいて、問題の日の曜日(1-7)を示します。

関連する問題