web-dev-qa-db-ja.com

SQL Serverで日付形式をDD/MMM/YYYY形式に変換する

私はSQLでクエリを持っている、私はdd/mmm/yyのフォーマットで日付を取得する必要があります

例:25/jun/2013

SQLサーバー用に変換する方法

56
Krish KvR

あなたが望むフォーマットに完全に一致するものがあるかどうかわからない。しかし、 convert() とスタイル106に近づくことができます。その後、スペースを置き換えます。

SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')
61

SQL Server 2008にはすでに 複数の回答とフォーマットの種類 があります。ただし、この方法では多少あいまいなので、Specific Date Formatに関する数値を覚えておくのは困難です。そのため、SQL Serverの次期バージョンではより良い選択肢があります。

SQL Server 2012以降のバージョンを使用している場合は、 Format()関数を使用する必要があります

FORMAT ( value, format [, culture ] )

カルチャオプションを使用すると、視聴者ごとに日付を指定できます。

DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
      ,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result'; 

SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
      ,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';

US English Result Great Britain English Result  German Result Simplified Chinese (PRC) Result
----------------  ----------------------------- ------------- -------------------------------------
10/1/2011         01/10/2011                    01.10.2011    2011/10/1

US English Result            Great Britain English Result  German Result                    Chinese (Simplified PRC) Result
---------------------------- ----------------------------- -----------------------------  ---------------------------------------
Saturday, October 01, 2011   01 October 2011               Samstag, 1. Oktober 2011        2011年10月1日

OPの解決策としては、@ Martin Martinによって既に言及されている以下のフォーマットを使用することができます。

FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')

いくつかのサンプル日付フォーマット:

enter image description here

もっと多くのSQLサーバーの日付フォーマットが欲しいなら、あなたは訪れるべきです:

  1. カスタムの日付と時刻の形式
  2. 標準の日付と時刻のフォーマット
44
Somnath Muluk

私たちは日付を多くのフォーマットに変換することができます

SELECT convert(varchar, getdate(), 106)

これはdd mon yyyyを返します

もっとここに これはあなたを助けるかもしれない

30
Nithesh

承認された回答は、2008年にすでに組み込まれているフォーマット方法を使用して最良の解決策を示しています。

ただし、返される結果はログインの言語によって異なります。

SET language Russian

SELECT replace(CONVERT(NVARCHAR, getdate(), 106), ' ', '/') 

返品

06/апр/2015

執筆時点で。

最近のバージョンのSQL Serverでこの問題に遭遇している人々のためにこの問題を回避する方法 - そしてREPLACEの必要性は

FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')

2005年以降は、DateTime、Formatting Pattern、およびCultureを受け入れてCLR UDFを作成し、それをシミュレートすることが可能になります。

9
Martin Smith

以下のクエリを使ってみてください。

SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');  

結果: 20/6月/ 13

SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');  

結果: 20/2013年6月

8
Praveen

これを試して :

select replace ( convert(varchar,getdate(),106),' ','/')
1
KD29

これを試して

select convert(varchar,getdate(),100)

3番目のパラメータはformatで、範囲は100から114までです。どれでも構いません。

dd/mmm/yyyyに日付が必要な場合はこれを使います。

replace(convert(char(11),getdate(),113),' ','-')

getdate()をあなたの列名に置き換えてください。これは私のために働きました。

1
Chethan

手動でsqlサーバーの「date type」変数に日付を入力しようとする人は、入力時にこのフォーマットを使用します。

'yyyy-mm-dd'

0
IteratioN7T