2017-05-19 5 views
1

YYYYMM 날짜 형식에 관한 쿼리를 만들려고합니다. 내 현재 쿼리가이 것입니다.다음 12 개월의 날짜 형식 쿼리

declare @M0 nvarchar(6);set @M0=(SELECT CONVERT(nvarchar(6), GETDATE(), 112)) 
declare @M1 nvarchar(6);set @[email protected]+1; 
declare @M2 nvarchar(6);set @[email protected]+1; 
declare @M3 nvarchar(6);set @[email protected]+1; 
declare @M4 nvarchar(6);set @[email protected]+1; 
declare @M5 nvarchar(6);set @[email protected]+1; 
declare @M6 nvarchar(6);set @[email protected]+1; 
declare @M7 nvarchar(6);set @[email protected]+1; 
declare @M8 nvarchar(6);set @[email protected]+1; 
declare @M9 nvarchar(6);set @[email protected]+1; 
declare @M10 nvarchar(6);set @[email protected]+1; 
declare @M11 nvarchar(6);set @[email protected]+1; 
declare @M12 nvarchar(6);set @[email protected]+1; 
select @M0,@M1,@M2,@M3,@M4,@M5,@M6,@M7,@M8,@M9,@M10,@M11,@M12 

나는 현재 YYYYMM 날짜 형식으로 다음 12 개월의 현재 날짜를 얻으려고합니다. 하지만 현재 쿼리에서 201705,201706, ... 201711201712201713201714 등이 제공됩니다. 따라서 지금까지 내가 얻으려고하는 것이 201705,201706, ... 201711201712201801201802 등으로 이미 알고있을 것입니다.

나는 모든 웹을 검색하여 아무런 답을 찾지 못했습니다. 그래서 나는 여기 와서 누군가가 나를 도울 수 있기를 바랍니다.

미리 감사드립니다.

답변

0

당신은 내년까지 압연 1 월부터로 재설정 처리 할 SQL 서버의 DATEADD를 사용할 수있다, 다음과 같이 당신의 YYYYMM 형식으로 그 변환 :

DECLARE @M0 NVARCHAR(6) = CONVERT(NVARCHAR(6), GETDATE(), 112); 
DECLARE @M1 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 1, GETDATE()), 112); 
DECLARE @M2 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 2, GETDATE()), 112); 
DECLARE @M3 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 3, GETDATE()), 112); 
DECLARE @M4 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 4, GETDATE()), 112); 
DECLARE @M5 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 5, GETDATE()), 112); 
DECLARE @M6 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 6, GETDATE()), 112); 
DECLARE @M7 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 7, GETDATE()), 112); 
DECLARE @M8 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 8, GETDATE()), 112); 
DECLARE @M9 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 9, GETDATE()), 112); 
DECLARE @M10 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 10, GETDATE()), 112); 
DECLARE @M11 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 11, GETDATE()), 112); 
DECLARE @M12 NVARCHAR(6) = CONVERT(NVARCHAR(6), DATEADD(MONTH, 12, GETDATE()), 112); 
SELECT @M0, @M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12 

출력은 다음과 같습니다

내가 코드를 기억하지 않을 수
+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ 
| 201705 | 201706 | 201707 | 201708 | 201709 | 201710 | 201711 | 201712 | 201801 | 201802 | 201803 | 201804 | 201805 | 
+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ 
+0

감사합니다 남자! 매력처럼 일했습니다! – PabloRjs

+0

당신을 환영합니다! 문제가 해결되었다고 생각되면 답변을 수락하십시오 :) – xcvd

0

핸디 작은 조각 ...

 WITH lv0 AS (SELECT 0 g UNION ALL SELECT 0) 
      ,lv1 AS (SELECT 0 g FROM lv0 a CROSS JOIN lv0 b) -- 4 
      ,lv2 AS (SELECT 0 g FROM lv1 a CROSS JOIN lv1 b) -- 16 
      ,lv3 AS (SELECT 0 g FROM lv2 a CROSS JOIN lv2 b) -- 256 
      ,Tally (n) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM lv3) 
     SELECT CAST(n AS VARCHAR(MAX)) + ' - ' + CONVERT(VARCHAR(MAX),GETDATE(), n) xZample 
     , 'CONVERT(VARCHAR(MAX),@MindIfWeDanceWitYoDates, '+CAST(n AS VARCHAR(25))+')' AS _________________________tehcode____________________________ 
     FROM Tally 
     WHERE (n< 200) AND (n%100 IN (0,20,21,120,121,126,127,130,131) OR n%100 <= 14) 
     ORDER BY n;