2016-05-27 13 views
0

SQL Serverの日付変換で特定の問題が発生しています。私はこの形式の日付を持っています:YYMM。これをDate_To_Formatとしましょう。SQL Serverでvarcharを日付に変換すると、正常に動作しない

私は今の問題は、私はこの月の最後の日を見つける必要がある日付

convert(varchar, concat('01', '-', Date_To_Format % 100, '-', 
     case when Date_To_Format/100 between 60 and 99 
       then concat('19', cast(Date_To_Format/100 as varchar)) 
       else concat('20', cast(Date_To_Format/100 as varchar)) 
     end), 5) 

に変換するために、この機能を書きました。私はdateaddをして1か月を追加し、それから1日を引いたかった。月の代わりに日付に月が追加されます。例えば

:私は01-10-2017を持って、dateadd(m,1,'01-10-2017')は、私はちょうど日付の代わりに月を認識するために、SQL Serverをだますする必要が

2017-02-10 00:00:00.0.を取得します。あなたは助けてもらえますか?ご不明な点がございましたらお知らせください。

+0

以降で使用可能ですおそらくいくつかのサンプルデータと所望の出力は、これがより明確になるだろう。投稿されたので、これは私には意味をなさない。 –

答えて

1

日付をvarcharではなく日付として保存します。あなたは、SQL Server 2012以降である場合は、これを試してみてください。

DECLARE @Date_To_Format nvarchar(4) = '1605' 

SELECT  
    BeginningOfMonth = DATEFROMPARTS(@Date_To_Format/100 + IIF(@Date_To_Format/100 BETWEEN 60 AND 99, 1900, 2000), @Date_To_Format % 100, 1), 
    EndOfMonth = DATEADD(DAY, -1, DATEFROMPARTS(@Date_To_Format/100 + IIF(@Date_To_Format/100 BETWEEN 60 AND 99, 1900, 2000), @Date_To_Format % 100 + 1, 1)) 

DATEFROMPARTSがSQL Server 2012

関連する問題