SQL DATEADD(weekday, 1, date) 好像不行?
SQL DATEADD(weekday, 1, date) does not seem to work?
这是我的查询:
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
按天和按工作日进行比较,return 结果相同。
列adate
只是典型的日期,我们可以看出Jan 28, 2017
是星期六。但是,在这一行上,lagged_date_v1
和 lagged_date_v2
return Jan 28
。如果我按工作日正确使用 DATEADD
,我应该看到 Jan 30
而不是 Jan 28
,对吗?
我的sql服务器版本是2008。
If I use DATEADD by weekday correctly, I should see Jan 30 instead Jan
28, right?
错了。在 SQL 服务器中,weekday
并不意味着不是周末的日子。这表示根据当前 datefirst
设置,一周中的哪一天 (1-7) 是相关日期。
这是我的查询:
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
按天和按工作日进行比较,return 结果相同。
列adate
只是典型的日期,我们可以看出Jan 28, 2017
是星期六。但是,在这一行上,lagged_date_v1
和 lagged_date_v2
return Jan 28
。如果我按工作日正确使用 DATEADD
,我应该看到 Jan 30
而不是 Jan 28
,对吗?
我的sql服务器版本是2008。
If I use DATEADD by weekday correctly, I should see Jan 30 instead Jan 28, right?
错了。在 SQL 服务器中,weekday
并不意味着不是周末的日子。这表示根据当前 datefirst
设置,一周中的哪一天 (1-7) 是相关日期。