这是我的问题:
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;
以下是上述代码的输出:
我将结果与工作日的DATEADD
进行了比较,并返回相同的结果。
列adate
只是典型的日期,我们可以告诉Jan 28, 2017
是星期六。但是,在此行中,lagged_date_v1
和lagged_date_v2
都会返回Jan 28
。如果我在工作日之前正确使用DATEADD
,我应该看到Jan 30
而不是Jan 28
,对吗?
我的sql server版本是2008.
答案 0 :(得分:2)
如果我在工作日正确使用DATEADD,我应该看Jan 30而不是Jan 28,对吧?
错误。在SQL Server中,weekday
并不意味着周末不是天。这意味着根据当前datefirst
设置,哪一天(1-7)是相关日期。