SQL Query从数据库中检索月份名称

时间:2014-01-14 07:53:44

标签: sql ms-access

我跟随查询,我想要做的是,我只想要日期列中的月份名称,在下面的查询中显示月份数

SELECT MONTH(Invoice_Date), SUM(R.Total) AS TOTAL
FROM Sales R
GROUP BY MONTH(Invoice_Date)
ORDER BY MONTH(Invoice_Date);

我尝试了MonthName功能,我也试过转换功能,但两个都没有工作。 显示以下错误未定义的功能。 请帮忙,谢谢

4 个答案:

答案 0 :(得分:1)

尝试MS SQL的datepart函数 http://msdn.microsoft.com/en-us/library/ms174420.aspx

MS sql查询将是:

SELECT 
  DATEPART(month,Invoice_Date), 
  SUM(R.Total) AS TOTAL 
FROM Sales R 
GROUP BY DATEPART(month,Invoice_Date) 
ORDER BY DATEPART(month,Invoice_Date)

假设Invoice_Date“是一个可以解析为time,date,smalldatetime,datetime,datetime2或datetimeoffset值的表达式.date可以是表达式,列表达式,用户定义变量或字符串文字。”< / p>

答案 1 :(得分:1)

假设您仅使用MS Access而不使用SQL Server,因此无法使用T-SQL函数,一种方法是使用switch函数,如下所示:

SELECT SWITCH( 
  MONTH(invoice_date) = 1, "January", 
  MONTH(invoice_date) = 2, "February", 
  MONTH(invoice_date) = 3, "March"
  MONTH(invoice_date) = 4, "April"
  MONTH(invoice_date) = 5, "May"
  MONTH(invoice_date) = 6, "June"
  MONTH(invoice_date) = 7, "July"
  MONTH(invoice_date) = 8, "August"
  MONTH(invoice_date) = 9, "September"
  MONTH(invoice_date) = 10, "October"
  MONTH(invoice_date) = 11, "November"
  MONTH(invoice_date) = 12, "December"
) AS MonthName, SUM(R.Total) AS TOTAL

FROM Sales R
GROUP BY MONTH(Invoice_Date)
ORDER BY MONTH(Invoice_Date);

另一种选择是创建一个包含月份名称和数字的表,并通过连接从中检索名称。

答案 2 :(得分:0)

是的,使用T-SQL可以从日期的月份数中获取月份名称。

SELECT DATENAME(month, DATEADD(month, MONTH(Invoice_Date), 0 ) -1);

然后,您的最终查询将如下所示:

SELECT MONTH(Invoice_Date), DATENAME(month, DATEADD(month, MONTH(Invoice_Date), 0 ) -1) as MonthName, SUM(R.Total) AS TOTAL
FROM Sales R
GROUP BY MONTH(Invoice_Date)
ORDER BY MONTH(Invoice_Date);

答案 3 :(得分:0)

试试这个

SELECT DATENAME(month, Invoice_Date), SUM(R.Total) AS TOTAL
FROM Sales R
GROUP BY DATENAME(month, Invoice_Date)
ORDER BY DATENAME(month, Invoice_Date);