【发布时间】:2021-06-20 05:48:46
【问题描述】:
我想计算 SQL 中两个日期之间的付款次数,包括开始日期。
例如如果第一个付款日期是 2020 年 8 月 28 日,随后的付款在每个月的 28 日完成。
我想计算到目前为止完成了多少付款。
我试过 select datediff(month,'2020-08-28 00:00:00.000','2021-03-28 00:00:00.000') 它给出 7,但我希望它是 8。
如果我尝试 select datediff(month,'2020-08-28 00:00:00.000','2021-04-01 00:00:00.000') 它给出 8。
我想知道从 28/08/2020 算起的月数。 2020 年 8 月 28 日应计为 1。
想要的结果应该如下
28/08/2020 - 1
28/09/2020 - 2
28/10/2020 - 3
28/11/2020 - 4
28/12/2020 - 5
28/01/2021 - 6
28/02/2021 - 7
28/03/2021 - 8
请您给点建议。谢谢。
编辑
如果第一个付款日期是 2020 年 1 月 30 日,因为没有 2 月 30 日,它应该是月底的日期,并且应该显示为到目前为止已完成的 2 笔付款。
【问题讨论】:
-
如果第一个付款日期是 1 月 30 日会怎样?二月没有第 30 天。
-
在这种情况下,2 月的最后一天将作为 1 个月。通常付款日期为每月 28 日或更早
-
我们不会根据“通常”之类的词编写代码。定义您的要求。如果您需要特殊的月末日期逻辑,那是一个(常见的)并发症。是时候编写一些 IMO 用例来帮助您理解“复杂性”了。
-
嗨@SMor,我已经编辑了我的问题,见上面的编辑。如果第一个付款日期是 2020 年 1 月 30 日,因为没有 2 月 30 日,它应该是月底的日期,并且应该显示为到目前为止已完成的 2 笔付款。
标签: sql sql-server date sql-server-2012 date-difference