根据日期计算月差 SQL Server 2008 R2
Calculate month difference based on dates SQL Server 2008 R2
我想计算两个日期之间的月差。
问题:
SELECT DATEDIFF(mm, '2015-11-01', '2015-11-30')
日期差异returns0。我想改为显示1。如果差异超过 15 天,则应四舍五入到下个月。
我尝试使用舍入和上限函数以及除以 30,但它仍然没有给我想要的结果。
此问题与 "possible duplicate" 不同的原因是因为我只查找基于开始日期和结束日期的月份计算。另外,我的开始和结束日期结构是月初和月末,而不是确切的日期。
试试这个:
SELECT DATEDIFF(mm, '2015-11-01', '2015-11-30')
+ CASE WHEN (DATEDIFF(mm, '2015-11-01', '2015-11-30') = 0 and DATEDIFF(dd, '2015-11-01', '2015-11-30') > 15) THEN 1 ELSE 0 END CASE
试试这个。
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
我想计算两个日期之间的月差。
问题:
SELECT DATEDIFF(mm, '2015-11-01', '2015-11-30')
日期差异returns0。我想改为显示1。如果差异超过 15 天,则应四舍五入到下个月。
我尝试使用舍入和上限函数以及除以 30,但它仍然没有给我想要的结果。
此问题与 "possible duplicate" 不同的原因是因为我只查找基于开始日期和结束日期的月份计算。另外,我的开始和结束日期结构是月初和月末,而不是确切的日期。
试试这个:
SELECT DATEDIFF(mm, '2015-11-01', '2015-11-30')
+ CASE WHEN (DATEDIFF(mm, '2015-11-01', '2015-11-30') = 0 and DATEDIFF(dd, '2015-11-01', '2015-11-30') > 15) THEN 1 ELSE 0 END CASE
试试这个。
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