SQLServerクエリで月の名前を返す


81

SQL Server 2008使用して、ビューの作成に使用されるクエリがあり、整数の代わりに月の名前を表示しようとしています。

私のデータベースでは、datetimeはと呼ばれる列にありますOrderDateTime。日付を返すクエリの行は次のとおりです。

DATENAME(yyyy, S0.OrderDateTime) AS OrderYear,
DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

これにより、年の列と月の列が整数として返されます。月の名前を返したい(Jan, Feb, etc)。私はもう試した:

CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

私が得るように、これは明らかに間違っています

'AS'の近くの構文が正しくありません

メッセージ。クエリの適切な構文は何ですか?


8
不正な構文のメッセージは、前の最終ブラケットをオフに閉じていないが原因であるAS-CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime)) AS OrderMonth
Jaymz

SQLクエリでのS0の意味
user7157710 2016年

@ user7157710 S0は、フィールドが配置されているテーブルに指定されたエイリアスです。
tia97 2016

回答:


155

これにより、その月のフルネームが表示されます。

select datename(month, S0.OrderDateTime)

最初の3文字だけが必要な場合は、これを使用できます

select convert(char(3), S0.OrderDateTime, 0)

「SQLクエリでS0はどういう意味ですか?」という回答に誤って投稿されたコメント user7157710
ペターFribergの

1
S0はテーブルのエイリアスです。答えは質問から引き継ぐことです。
bpainter 2017年

追加したいのですが、通常、これらの関数は使用したくありません。日付を日付(時刻)として、月を整数などとして選択してから、UIに人間にわかりやすい月の名前への「変換」を任せることをお勧めします。そうすれば、アプリケーション/ UIは、データベースではなくローカリゼーションを処理できます。データベースは、ローカリゼーションに関するユーザーの設定やアプリケーションの設定にわずかな手がかりを持っていません。別の言い方をすれば、次のように考えてください。ユーザーが2月よりも中国の2月を好む場合はどうでしょうか。
RobIII


12

変化する:

CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

に:

CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth

私はあなたが意味すると思いますDATENAMEDATEPARTそれをしません。
ドルイド




1

これにより、uが要求しているものが得られます。

select convert(varchar(3),datename(month, S0.OrderDateTime)) 


0

dbを押すことなく、すべての月の名前を取得できます。

WITH CTE_Sample1 AS
(
    Select 0 as MonthNumber

    UNION ALL

    select MonthNumber+1 FROM CTE_Sample1
        WHERE MonthNumber+1<12
)

Select DateName( month , DateAdd( month , MonthNumber ,0 ) ) from CTE_Sample1

0

基本的にこれ...

declare @currentdate datetime = getdate()
select left(datename(month,DATEADD(MONTH, -1, GETDATE())),3)
union all
select left(datename(month,(DATEADD(MONTH, -2, GETDATE()))),3)
union all
select left(datename(month,(DATEADD(MONTH, -3, GETDATE()))),3)


0

私にとって、DATENAMEは会社の制限のためにアクセスできませんでした....しかし、これも非常に簡単に機能しました。

FORMAT(date, 'MMMM') AS month
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.