193


40

SQL Serverに1、2、3、4、…​ 12の月を格納しています。 1月、2月などとして表示したいです。 MonthName(1)= JanuaryのようなSQL Serverの関数はありますか? 可能であれば、CASEステートメントを避けようとしています。

30 Answer


238


私はこれがあなたが*月番号*を持っているとき*月名*を得るための最良の方法だと思います

DateNameを選択します(月、DateAdd(月、@月数、0) -  1)

または

DateNameを選択します(月、DateAdd(月、@月数、-1))


148


ちょっとハッキーですが、うまくいくはずです。

SELECT DATENAME(月、DATEADD(月、@ mydate-1、CAST( '2008-01-01' AS datetime))))


89


SELECT DATENAME(月、GETDATE())AS '月名'


63


SUBSTRING( '1月3日から9月10日までの1月6日'、(@ intMonth * 4) -  3、3)


30


最善の方法を使う

DateNameを選択します(月、DateAdd(月、@月数、-1))


20


とても簡単です。

DATENAMEを選択してください(月、getdate())

出力:1月


6


以下は私のために働きます:

CAST(GETDATE()AS CHAR(3))


5


オリジナルに加えて

SELECT DATENAME(m、str(2) '/ 1/2011')

あなたはこれを行うことができます

SELECT DATENAME(m、str([column_name]) '/ 1/2011')

このようにして、テーブル内のすべての行の名前を取得します。 [column_name]は、1から12までの数値を含む整数列を表します。

2は任意の整数を表し、連絡先文字列iは月を抽出できる日付を作成しました。 '/ 1/2011’は任意の日付にすることができます

あなたが変数でこれをしたいならば

DECLARE @integer int;

SET @integer = 6;

SELECT DATENAME(m, str(@integer) + '/1/2011')


4


ヘブライ語のようないくつかのロケールでは、年に依存する leap monthsがあります。そのようなロケールでのエラーを避けるために、あなたは以下の解決策を考慮するかもしれません:

SELECT DATENAME(月、STR(年(GETDATE())、4)置換(STR(@月、2)、 ''、 '0') '01')


4


このステートメントを使用して、月の数値を月の名前に変換します。

SELECT CONVERT(CHAR(3)、DATENAME(MONTH、GETDATE()))