Sql server 2008 r2 根据日期计算月差SQL Server 2008 R2

Sql server 2008 r2 根据日期计算月差SQL Server 2008 R2,sql-server-2008-r2,datediff,Sql Server 2008 R2,Datediff,我想计算两个日期的月差 问题是: SELECT DATEDIFF(mm, '2015-11-01', '2015-11-30') 日期差返回0。我想改为显示1。如果差额超过15天,则应在下个月进行调整 我尝试使用圆形和天花板函数以及除法30,但它仍然没有给我想要的结果 这个问题不同于“可能重复”的原因是因为我只寻找基于开始和结束日期的月份计算。此外,我的开始和结束日期结构是一个月的开始和结束,而不是确切的日期。尝试以下方法: 选择日期差异(mm,'2015-11-01','2015-11-30

我想计算两个日期的月差

问题是:

SELECT DATEDIFF(mm, '2015-11-01', '2015-11-30')
日期差返回0。我想改为显示1。如果差额超过15天,则应在下个月进行调整

我尝试使用圆形和天花板函数以及除法30,但它仍然没有给我想要的结果

这个问题不同于“可能重复”的原因是因为我只寻找基于开始和结束日期的月份计算。此外,我的开始和结束日期结构是一个月的开始和结束,而不是确切的日期。

尝试以下方法:

选择日期差异(mm,'2015-11-01','2015-11-30')
+当(DATEDIFF(mm,'2015-11-01','2015-11-30')=0和DATEDIFF(dd,'2015-11-01','2015-11-30')>15)时,则为1,否则为0,请尝试此操作

Select 
     DATEDIFF(mm, '2015-11-01', '2015-11-30') 
     + CASE WHEN abs(DATEPART(day, '2015-11-01') - DATEPART(day, '2015-11-30')) > 15 THEN 1 ELSE 0 END

它返回零是因为,您指定的日期部分是month,而您的示例中的month没有区别看起来您需要一些自定义的日期解析逻辑,并且对默认内置的正常日期解析逻辑不满意。也许可以考虑数周内的差异,然后从那里开始?选择DATEDIFF(wk,'2015-11-01','2015-11-30')选择DATEDIFF(wk,'2015-11-01','2015-11-15')(1)请拼出
month
,而不是像
mm
(参见和)(2)
DATEDIFF
那样使用懒散的速记,因为这两个日期都发生在11月,无月变化=日期差异为0。如果您希望以天为基础,请使用
DATEDIFF(DAY,…)/15
。可能的副本需要详细说明所需的逻辑,因为日期有许多恼人的边缘情况。例如,在2月份(28天),是否应该改为14天?跨多个月,它应该如何工作?举例来说,你可以在天数中找到差异,除以15,但是有很多边缘情况需要考虑。请…………这个解决方案明确地指出了我的正确方向,但并不准确。示例:“2015-11-01”和“2015-12-01”之间的差异显示为2,而不是1。@非程序员我意识到了错误,并将更新后的月差异测试包含为0。我认为这应该能奏效。不幸的是,它仍然不起作用。我想我是根据你的建议把它和DATEPART结合起来的。