ID | 計上年月 |
---|---|
1 | 201205 |
2 | 201206 |
のように、年月をint型で作成した列にたいして、加算・減算を行いたい
↓1行でかいてみる
CAST(SUBSTRING(CONVERT(varchar(12),DATEADD(MONTH,@interval,CAST(CAST(@ym AS varchar(6))+ '01' AS DATE)),112),1,6) AS int)
↓わかりづらいので分解してみる
CDECLARE @ym AS int = 201206;
DECLARE @interval AS int = -6
DECLARE @ymd_before AS DATE = CAST(CAST(@ym AS varchar(6))+ '01' AS DATE);
DECLARE @ymd_after AS DATE = DATEADD(MONTH,@interval,@ymd_before);
SELECT CAST(SUBSTRING(CONVERT(varchar(12),@ymd_after,112),1,6) AS int);
※@ymが対象の計上年月,@intervalが加減する月数。関数として使おうかと思ってこのつくりです。