找出月份中的月份差异

时间:2018-07-15 13:39:53

标签: sql-server

我想找到两个日期之间的差额,该差额应以月为单位,例如,如果日期差大于182天,则在183日应显示为7个月。我尝试在一个月以下进行尝试,

SELECT ROUND(cast(DATEDIFF(DD,'2018-01-01 18:45:30.203',GETDATE()) as float)/30,0)

但相差15天。

2 个答案:

答案 0 :(得分:1)

我不会使用30。它在某些月份失败了。例如,自2月以来的1月1日和3月2日至少没有30天。但是我认为这就是你所追求的。如果当前日期不是每月的第一天,则添加一个月。

SELECT 
   Case 
        when datepart(day,getdate()) > 1
        Then datediff(month,'2018-01-01 18:45:30.203',GETDATE()) + 1
        Else datediff(month,'2018-01-01 18:45:30.203',GETDATE())
    End

答案 1 :(得分:0)

我认为将月份的差额计算为整数非常类似于计算一个人的年龄。我们可以将DATEDIFF以月为单位,将这个月数添加到第一个日期,然后将其与第二个日期进行比较,以确定是否必须从差值中减去1:

if (prop === 'prop') { observer.notifyMe() }