一尘不染

SQL查询以生成日期范围内的每月支付日期

sql

我想根据给定的日期和日期范围生成每月的支付日期。假设我选择“
01/30/2016”作为开始支付日期和日期范围为2016年。那么支付日期将为整个2016年的其他月份(第-1个月)。我为付款日期“
01/30/2016”添加了结果集的屏幕截图。我想知道SQL中的查询。

任何帮助将不胜感激。


阅读 178

收藏
2021-05-16

共1个答案

一尘不染

您可以如下所示:

DECLARE @SelectedDate DATETIME = '2016.01.30'
SELECT
     DATEADD(DAY, -1 - (DAY(EOMONTH(@SelectedDate)) - DAY(@SelectedDate)),  DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@SelectedDate), 1, 1)))   
FROM
    (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)) AS v(m)

月底还剩多少天。找到的天数将从其他月份中删除。

DAY(EOMONTH(@SelectedDate)(31)- DAY(@SelectedDate)(30)= left days(1)

结果:

2016-01-30
2016-02-28
2016-03-30
2016-04-29
2016-05-30
2016-06-29
2016-07-30
2016-08-30
2016-09-29
2016-10-30
2016-11-29
2016-12-30
2021-05-16