sql server日期差异时只提到月份和年份

时间:2014-02-12 18:41:04

标签: sql-server datetime datediff sql-date-functions

考虑到2个月和几年。没有一天提到。我需要计算SQL中这两个日期之间的差异.SQL Server DB中列的示例。

MonthFROM    YearFROM   MonthTo  YearTO

12           2010       1        2012

产量应为14个月。

4 个答案:

答案 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上的演示