2016-08-22 18 views
1

私はこの形式の日付のテーブルを持っています。私は、例えば、YYYY-MM形式SQL Serverの日付変換の質問

に変換する必要がYYYYDDD

は、私は、日付2016003を持っているので、これは2016-01になるはずです。

同様に、2016055の日付が2016-02

は、ユーザー関数を作成することなく、これらを表示する方法はありになるでしょうか?

おかげ

+2

現在のテーブルにあるものは日付ではありません。それらは日付を表す数字です。可能であれば、数字や文字列として日付情報を保存しないでください。日付または日時として格納する必要があります。あなたの人生はそれほど苦痛を軽減します。 –

答えて

3

私は最も簡単な方法は、今年の初めに日追加することだと思います。だから、日付を取得する:

select dateadd(day, cast(right(col, 3) as int) - 1, 
       cast(left(col, 4) + '01-01' as date) 
      ) as dte 

あなたはそれを好きなようにフォーマットすることができます。たとえば、SQL Server 2012以降では、format()を使用できます。

select format(dateadd(day, cast(right(col, 3) as int) - 1, 
         cast(left(col, 4) + '01-01' as date) 
        ), 'YYYYMM' 
      ) as yyyymm