从数据库检索月份名称的SQL查询

从数据库检索月份名称的SQL查询,sql,ms-access,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函数,也尝试了convert函数,但两者都不起作用。 以下错误显示为未定义的函数。 请帮助,谢谢尝试MS SQL的datepart函数 MS

在下面的查询中,我想做的是,我只想从日期列中找到月份名称,在下面的查询中显示月份号

SELECT MONTH(Invoice_Date), SUM(R.Total) AS TOTAL
FROM Sales R
GROUP BY MONTH(Invoice_Date)
ORDER BY MONTH(Invoice_Date);
我尝试了MonthName函数,也尝试了convert函数,但两者都不起作用。 以下错误显示为未定义的函数。
请帮助,谢谢

尝试MS SQL的datepart函数

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“是一个可以解析为时间、日期、smalldatetime、datetime、datetime2或datetimeoffset值的表达式。日期可以是一个表达式、列表达式、用户定义变量或字符串文字。”

是的,使用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);
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);
试试这个

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);

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

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);
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);

另一个选项是创建一个包含月份名称和编号的表,并通过联接从中检索名称

DATEPART
函数在Access中不可用,因为它是一个t-SQL函数,并且返回和int,而不是月份名称。