2016-05-03 11 views
-1

どのように私はD-MMM-YYYY形式でGETDATE()から文字列を取得することができ、例えば3 May 2016SQL Serverの - D-MMM-YYYY形式に日付を変換

私はCONVERT(VARCHAR, GETDATE(), 106)を使用している場合は、私が何をされていない日に先行ゼロになるだろうが欲しいです。

+4

データが表示されているフロントエンドクライアントでフォーマットします。 SQLの終わりでそれをしないでください – Squirrel

+2

データベースで日付をフォーマットしようとしているのを慎重に検討してください。それはほとんど常に悪い考えや誤解です。 –

答えて

5

あなたは2012年以降のSQL Server上にある場合は、FORMAT使用:

SELECT FORMAT(GETDATE(), 'd MMM yyyy') 

編集:は、以下の回答の一部は、間違ったので、私は古いバージョンのためのソリューションを追加しているだけでフラットアウトですSQLサーバー。 2005年は、私が上で私の手を得ることができる最も早い:

SELECT CASE 
     WHEN CONVERT(varchar(20), GETDATE(), 106) LIKE '0%' 
      THEN SUBSTRING(CONVERT(varchar(20), GETDATE(), 106), 2, 20) 
     ELSE CONVERT(varchar(20), GETDATE(), 106) 
     END 
5
SELECT case when left(convert(varchar(20),[DateColumn],106),1) ='0' 
     then right(convert(varchar(20),[DateColumn],106),len(convert(varchar(20),[DateColumn],106))-1) 
     else convert(varchar(20),[DateColumn],106) 
     end 
    FROM [DB].[dbo].[Table] 

いくつかのサンプル出力:

29 Apr 2016 
2 Apr 2016 
+0

偉大な......!良い例え。それは私にも役立ちます – Suji

0

あなたはFORMAT(SQL Serverの下には2012)を使用することができない場合

DECLARE @date DATE = '20160503' 

SELECT REPLACE(DATEPART(DAY, @date),' 0','') + ' ' + 
     CONVERT(CHAR(3), @date, 0) + ' ' + 
     CAST(DATEPART(YEAR, @date) AS CHAR(4)) 
+0

あなたのソリューションは '2020年5月30日'を '2016年5月3日 'に変換します。また、 'CAST(GETDATE()AS CHAR(3))'があなたに月の名前を与えるという保証はありません。 'GETDATE()'を 'date'(' datetime'ではなく)変数に置き換えてみてください。 –

+0

@CodeDifferent答えを更新しました。 '20160530'で試してみることもできます – sqluser

関連する問題