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」の近くの誤った構文
メッセージ。クエリの適切な構文は何ですか?
これにより、月のフルネームが表示されます。
select datename(month, S0.OrderDateTime)
最初の3文字だけが必要な場合は、これを使用できます
select convert(char(3), S0.OrderDateTime, 0)
DATENAME(MONTH, S0.OrderDateTime)
を試しましたか?
変化する:
CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
に:
CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth
これを試して:
SELECT LEFT(DATENAME(MONTH,Getdate()),3)
テーブル名からSUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3)
を選択します
SQL Server 2012では、FORMAT(@mydate, 'MMMM') AS MonthName
を使用できます
これにより、あなたが何をリクエストしているかがわかります:
select convert(varchar(3),datename(month, S0.OrderDateTime))
SELECT MONTHNAME( `col1` ) FROM `table_name`
DECLARE @iMonth INT=12
SELECT CHOOSE(@iMonth,'JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER')
基本的にこれ...
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)
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