Dat*_*ice 1 sql t-sql sql-server
我有一个简单的日期维度,
SELECT [actualDate]
FROM (
VALUES ('2021-09-20')
, ('2021-09-21')
, ('2021-09-22')
, ('2021-09-23')
, ('2021-09-24')
, ('2021-09-25')
, ('2021-09-26')
, ('2021-09-27')
, ('2021-09-28')
) as t(actualDate)
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个窗口函数(没有太多运气......)来获得以下结果。
其中 1 是今天,0 是昨天。
+----------+----------+
|actualDate|dateOffset|
+----------+----------+
|2021-09-20|-4 |
|2021-09-21|-3 |
|2021-09-22|-2 |
|2021-09-23|-1 |
|2021-09-24|0 |
|2021-09-25|1 |
|2021-09-26|2 |
|2021-09-27|3 |
|2021-09-28|4 |
+----------+----------+
Run Code Online (Sandbox Code Playgroud)
接下来我可以尝试什么?我不确定要搜索什么。
假设日期是连续的,我们甚至不需要分析函数,而是可以使用DATEDIFF
:
SELECT
actualDate,
1 + DATEDIFF(day, CAST(GETDATE() AS date), actualDate) dateOffset
FROM yourTable
ORDER BY actualDate;
Run Code Online (Sandbox Code Playgroud)