2017-05-19 7 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 

私が得ようとしているのは、現在の日付から今後12ヶ月間のYYYYMM日付形式です。しかし、私の現在のクエリでは、201705,201706、... 201711,201712,201713,201714などが与えられています。だから今私は取得しようとしていることを知っているかもしれない:201705,201706、... 201711,201712,201801,201802、など。

私はほとんどすべてのウェブを検索しており、答えは見つかりませんでした。だから私はここに来たので誰かが私を助けることができればうれしい。

ありがとうございます!

答えて

0

あなたは来年にロールオーバーとバック1月にリセット処理するSQL Serverの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; 
関連する問題