繁体   English   中英

计算两个日期之间的月数 SQL

[英]Calculate number of months between 2 dates SQL

我想计算两个日期之间的整月数

declare @startdate date='2021-03-03';
declare @enddate date='2021-05-02';

select datediff(mm,@startdate,@enddate)

这给了我 output 为 2 但我希望它为 1 因为它应该只计算整月。 所以从 03/03/2021 到 03/04/2021 是 1 个月,从 03/04/21 到 02/05/21 仍然不是整月。 所以,在这个例子中,答案应该是 1。 我如何实现这一目标?

一种方法是

declare @startdate date='2021-03-03';
declare @enddate date='2021-05-02';

select datediff(mm,@startdate,@enddate) - case when dateadd(mm, datediff(mm,@startdate,@enddate), @startdate) > @enddate then 1 else 0 end

在某些情况下,整月是一件棘手的事情。

  1. 如果我从 1 月 31 日开始到 2 月 28 日结束,那是整整一个月吗?
  2. 如果我从 2019 年 2 月 28 日开始,到 2020 年 2 月 28 日结束,那是整整 12 个月吗?
  3. 如果我从 2020 年 2 月 29 日开始,到 2021 年 2 月 28 日结束,那是整整 12 个月吗?

如果您不关心这些情况,而只是想要一个简单的规则,例如“如果 EndDay>=StartDay 则为整月,您可以使用“ Case When Day(Enddate)<Day(Startdate) Then 1 Else 0 End来调整差异"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM