【发布时间】:2020-12-07 17:29:50
【问题描述】:
我正在尝试在 SQL Server 中计算频率估计值,并且我正在使用以下查询来获取结果,
FORMAT(DATEADD(month,-66, DATEADD(dd, 0,DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0))), 'd','us') --For -5.5 years Frequency
FORMAT(DATEADD(month,-6, DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, 0, DATA_ASOF_TSTMP), 0))), 'd','us') --For -6 Months Frequency
我得到了以下结果
5.5_Years_Frequency 6_Months_Frequency
4/1/2015 3/30/2020
对于 -6 个月的频率,我得到的结束日期为 2020 年 3 月 30 日,但 3 月有 31 天,因此,我希望结果为 2020 年 3 月 31 日而不是 2020 年 3 月 30 日,如下所示。
预期结果,
5.5_Years_Frequency 6_Months_Frequency
4/1/2015 3/31/2020
谁能帮我得到预期的结果?
【问题讨论】:
-
您的问题不清楚。你能用文字描述尝试的计算吗? “6 个月频率”是否等于“获取当前季度前 3 个季度的季度结束日期”?
-
是的,你是对的。但是,当我从当前季度计算 -6 个月时,我得到的结束日期为 2020 年 3 月 30 日,但 3 月有 31 天,我应该得到 2020 年 3 月 31 日而不是 2020 年 3 月 30 日。
-
添加了 6 个月频率的答案,但您当前和预期的“5.5 年频率”结果在您的问题中是否相同?而 4 月 1 日是季度 开始日期,因此它与 6 个月频率的定义不匹配(它给出了 结束日期)。
-
是的,但是对于 5.5 年的频率,我不想要季度结束日期,它应该是下一个季度的开始日期,这就是业务要求我们创建逻辑的方式。跨度>
-
好的,那么你可以从计算中删除
dateadd(dd, 0,;-)
标签: tsql sql-server-2017