我想计算两个日期之间的完整月数
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。我如何做到这一点?
我想计算两个日期之间的完整月数
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。我如何做到这一点?
2条答案
按热度按时间lmvvr0a81#
一种方法是
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”来调整差值