【发布时间】:2021-07-21 00:35:25
【问题描述】:
My SQL Server 2014 表包含一个名为 CreatedOn 的 datetime 列。
每天我都需要确定在该日期创建的公司恰好是 6 个月前或 6 个月前的倍数(即存储日期时间后 6 个月、12 个月后、18 个月后等)。我可以编写查询的其余部分,但无法弄清楚如何识别与日期列表匹配的行(即 2020 年 10 月 27 日、2020 年 4 月 27 日、2019 年 10 月 27 日、2019 年 4 月 27 日、2018 年 10 月 27 日、2018 年 4 月 27 日,等)。
这是获取恰好在 6 个月前创建的公司的查询。如何调整查询以包含额外的 6 个月间隔?
select *
from work
where DATEPART(d, CreatedOn) = DATEPART(d, DATEADD(m, -6, getdate()))
and DATEPART(m, CreatedOn) = DATEPART(m, DATEADD(m, -6, getdate()))
and DATEPART(yyyy, CreatedOn) = DATEPART(yyyy, DATEADD(m, -6, getdate()))
样本数据
Name CreatedOn
-------------------------------------
Company A 2020-10-27 13:49:15.597
Company B 2021-04-27 15:25:09.720
Company C 2021-03-16 15:50:01.443
Company D 2018-04-27 21:58:18.903
我希望 A 公司和 D 公司出现在我的结果集中
【问题讨论】:
-
什么行?样本数据和期望的结果会有所帮助。
-
为此您需要一个日历或计数表。它可以作为查询的一部分即时生成。此代码是特定于 DBMS 的。你的 DBMS 是什么?
-
@Serg - 运行 MS SQL 2014
标签: sql sql-server datetime dateadd