考虑到2个月和几年。没有一天提到。我需要计算SQL中这两个日期之间的差异.SQL Server DB中列的示例。
MonthFROM YearFROM MonthTo YearTO
12 2010 1 2012
产量应为14个月。
答案 0 :(得分:2)
以这种方式保持约会并不是一个好主意。
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')
答案 1 :(得分:2)
请使用简单的算术尝试以下操作:
Select (YearTo - YearFrom) * 12 + MonthTo - MonthFrom + 1 as Difference
from MyTable;
答案 2 :(得分:1)
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
。
答案 3 :(得分:0)
如果您使用的是SQL Server 2012 这是快速的方法
SELECT DATEDIFF(month, DATEFROMPARTS (YearFROM, MonthFROM, 01),
DATEFROMPARTS (YearTO, MonthTo, 01))
FROM YourTable
SQL Fiddle上的演示