3

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

MonthFROM    YearFROM   MonthTo  YearTO

12           2010       1        2012

输出应为 14 个月。

4

4 回答 4

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')
于 2014-02-12T18:46:36.010 回答
2

请使用简单的算术尝试以下操作:

Select (YearTo - YearFrom) * 12 + MonthTo - MonthFrom + 1 as Difference
  from MyTable;
于 2014-02-12T19:23:50.843 回答
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

于 2014-02-12T18:47:04.497 回答
0

如果您使用的是 SQL Server 2012,这是执行此操作的快速方法

SELECT DATEDIFF(month, DATEFROMPARTS (YearFROM, MonthFROM, 01),
                DATEFROMPARTS (YearTO, MonthTo, 01))
FROM YourTable

SQL Fiddle演示

于 2014-02-12T19:28:20.513 回答