例如,我想计算190001的月差
Product | YrMo | Month_Num |
A | 201602 | 1392 |
A | 201603 | 1393 |
B | 201605 | 1396 |
可以操纵Datediff还是有其他方法?
答案 0 :(得分:1)
SELECT
Product
,YrMo
,DATEDIFF(month,'1/1/1900',DATEFROMPARTS(LEFT(YrMo,4),RIGHT(YrMo,2),1)) AS Month_Num
FROm
TableName
看到你知道它总是6个数字,只需拆分字符串并从year
,month
,然后1
为day
建立一个日期并使用{ {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)