微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决计算两个日期之间的月数 SQL

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

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

select datediff(mm,@startdate,@enddate)

这给我的输出是 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,@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)"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。