如何以YYYYMM格式计算两个日期之间的月数?

时间:2016-06-28 22:07:35

标签: sql-server

例如,我想计算190001的月差

 Product  | YrMo   | Month_Num | 
 A        | 201602 | 1392      |
 A        | 201603 | 1393      |
 B        | 201605 | 1396      |

可以操纵Datediff还是有其他方法?

2 个答案:

答案 0 :(得分:1)

SELECT
    Product
    ,YrMo
    ,DATEDIFF(month,'1/1/1900',DATEFROMPARTS(LEFT(YrMo,4),RIGHT(YrMo,2),1)) AS Month_Num
FROm
    TableName

看到你知道它总是6个数字,只需拆分字符串并从yearmonth,然后1day建立一个日期并使用{ {1}}从那里开始。

答案 1 :(得分:1)

- 如果它们是整数,这很可能是最快的(转换次数最少)

- INTEGER除以100得到你一年。

- 按100分的MOD除以你的月份。

DECLARE @STARTDATE INT = 190001;
DECLARE @ENDDATE INT = 201602;

select (@ENDDATE/100 - @STARTDATE/100) * 12 
           + (@ENDDATE % 100 - @STARTDATE % 100);

SELECT (YrMo/ 100 - 190001 / 100) * 12 + (YrMo % 100 - 190001 % 100)