鉴于 2 个月和几年。没有提到一天。我需要计算 SQL Server DB 中列的 SQL.Example 中这两个日期之间的差异。
MonthFROM YearFROM MonthTo YearTO
12 2010 1 2012
输出应为 14 个月。
鉴于 2 个月和几年。没有提到一天。我需要计算 SQL Server DB 中列的 SQL.Example 中这两个日期之间的差异。
MonthFROM YearFROM MonthTo YearTO
12 2010 1 2012
输出应为 14 个月。
以这种方式保持日期并不是一个好主意。
SELECT DATEDIFF(mm, CAST(YearFROM as varchar) + RIGHT('0' + CAST(MonthFROM as varchar), 2) + '01',
CAST(YearTO as varchar) + RIGHT('0' + CAST(MonthTO as varchar), 2) + '01')
请使用简单的算术尝试以下操作:
Select (YearTo - YearFrom) * 12 + MonthTo - MonthFrom + 1 as Difference
from MyTable;
SQL Fiddle以下内容:
SELECT DATEDIFF(month,
CONVERT(VARCHAR(19),
CAST(MonthFROM as varchar) + '/01/' + CAST(YearFROM as varchar),
101),
CONVERT(VARCHAR(19),
CAST(MonthTo as varchar) + '/01/' + CAST(YearTO as varchar),
101)) + 1 AS MonthPast
FROM MyTable;
结果将是:
MONTHPAST
14
实际月份的差异是13
,但你得到14
了你所期望的结果。如果您的计算错误并且您确实需要,则从查询13
中删除。+ 1
如果您使用的是 SQL Server 2012,这是执行此操作的快速方法
SELECT DATEDIFF(month, DATEFROMPARTS (YearFROM, MonthFROM, 01),
DATEFROMPARTS (YearTO, MonthTo, 01))
FROM YourTable