根据今天的日期对日期进行排名

奥马尔.H

我有一个简单的日期维度,

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)

我正在尝试编写一个 Window 函数(运气不好..)来获得以下结果。

其中 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         |
+----------+----------+

有没有人能够帮助或指导我走向受骗的方向,因为我不确定要搜索什么。

蒂姆·比格莱森

假设日期是连续的,我们甚至不需要解析函数,而是我们可以使用DATEDIFF

SELECT
    actualDate,
    1 + DATEDIFF(day, CAST(GETDATE() AS date), actualDate) dateOffset
FROM yourTable
ORDER BY actualDate;

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章