计算两个日期之间的月数

iyr7buue  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(775)

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

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

select datediff(mm,@startdate,@enddate)

这是给我的输出为2,但我希望它是1,因为它应该算完整的几个月只。所以从2021年3月3日到2021年4月3日是一个月,从2021年4月3日到2021年5月2日仍然不是一个月。在这个例子中,答案应该是1。我如何做到这一点?

lmvvr0a8

lmvvr0a81#

一种方法是

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
clj7thdc

clj7thdc2#

在某些情况下,整整一个月是一件棘手的事情。
如果我从1月31日开始到2月28日结束,那是一个完整的月吗?
如果我从2019年2月28日开始,到2020年2月28日结束,那是12个月吗?
如果我从2020年2月29日开始,到2021年2月28日结束,那是12个月吗?
如果您不关心这些情况,只需要一个简单的规则,如“如果endday>=startday是一个完整的月份,您可以用“case when day(enddate)<day(startdate)then 1 else 0 end”来调整差值

相关问题