2011-04-13 113 views
71

使用SQL Server 2008,我有一個查詢用於創建一個視圖,我試圖顯示一個月的名稱而不是一個整數。在SQL Server查詢中返回月份名稱

在我的數據庫中,日期時間位於名爲OrderDateTime的列中。查詢中返回日期的行如下所示:

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

這將返回一列作爲整數的年份和一列月份。我想返回月份名稱(1月,2月等)。我已經試過:

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

這顯然是不正確,因爲我得到「附近有語法錯誤‘AS’」的消息。我的查詢的正確語法是什麼?

+8

不正確的語法信息是由於'AS'之前不封閉該最後括號 - 'CONVERT(VARCHAR(3),DATEPART(月,S0 .OrderDateTime))AS OrderMonth' – Jaymz 2011-04-13 14:27:58

+0

SQL查詢中S0的含義是什麼 – user7157710 2016-11-14 15:58:30

+0

@ user7157710 S0是字段所在表的別名。 – tia97 2016-12-27 18:28:32

回答

128

這會給你這個月的全名。

select datename(month, S0.OrderDateTime) 

如果你只是想你可以使用這個

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

評論不正確張貼在[答案](http://stackoverflow.com/a/40592863/5292302)「什麼是S0在sql查詢中的含義?」通過[user7157710](http://stackoverflow.com/users/7157710/user7157710) – 2016-11-14 16:01:23

+1

S0是表的別名。答案是從問題中解決。 – Bpainter 2017-06-26 21:48:05

12

更改的前三個字母:

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

要:

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

我想你的意思是'DATENAME'。 'DATEPART'不會這樣做。 – Druid 2013-02-11 14:11:49

16

你試過DATENAME(MONTH, S0.OrderDateTime)

1

這會給你什麼ü被請求:從你的表名

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

選擇SUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3)

6

試試這個:

SELECT LEFT(DATENAME(MONTH,Getdate()),3) 
2

在SQL Server 2012中,可以使用FORMAT(@mydate, 'MMMM') AS MonthName

1
SELECT MONTHNAME(`col1`) FROM `table_name` 
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)