【发布时间】:2022-01-05 16:54:11
【问题描述】:
我正在编写一个查询,我需要在其中获取过去三年的数据。我想要捕捉的是从一月到现在的过去三年。随着时间的推移,这需要动态添加几个月到 2022 年,同时保留 2019 年的整个历史记录。
不幸的是,我的显示从今天开始三年的历史(36 个月,从 2019 年 1 月下降。
查询:
WHERE PDBC.PDBC_EFF_DT >= DATEADD(YEAR,-3,GETDATE())
WHERE PDBC.PDBC_EFF_DT >= '01/01/2019'
有效,但不想在今年之后更新 年份,因为它嵌入在 excel 中。
输出:
https://i.stack.imgur.com/kC0G8.png
需要:
2019 年 1 月至今,最短日期更改为明年 2020 年 1 月。
修复:
感谢大家的意见,从你们的每个 cmet 中学到了一点,我想大概是这样......
WHERE
YEAR(PDBC.PDBC_EFF_DT) BETWEEN YEAR(GETDATE()) - 3 AND YEAR(GETDATE())
【问题讨论】:
-
如果您包含完整的查询,我可以给出正确的答案 - 但如果您使用变量来表示今年一月的第一天(而不是
GETDATE()),那么会有帮助的。 -
datefromparts(year(getdate()) - 3, 1, 1)将为您提供“三年前的 1 月 1 日”。即,如果您在 2022 年的任何一天执行此操作,它将给出 2019-01-01 -
想一想,
GETDATE()返回 当前 日期和时间。所以,现在它会返回一个类似于2022-01-05 17:20:37.423(UTC) 的值。如果从中减去 3 年,您将得到2019-01-05 17:20:37.423;您缺少 4 天 ~17 小时的数据。# -
要求不明确。
capture is the past three years (Jan - Dec)但您现有的WHERE子句只说>=。那么你只想要 2019 年、2020 年和 2021 年的数据吗?还是从 2019 年 1 月 1 日到现在的所有数据?如果是前者,那么您什么时候转移到 2020 年、2021 年和 2022 年?
标签: sql sql-server database