我有一个Access数据库表,其中包含DateTime格式的一行日期。我需要做的是将可用日期的所有不同月份名称放入我的asp.net页面。例如,如果我有以下日期:
03-JAN-13
04-JAN-13
09-FEB-13
sql查询会给我以下月份名称:JAN和FEB。 在搜索网页后,我发现以下的sql查询应该能够满足我的需求:
OleDbCommand cmd5 = new OleDbCommand("SELECT distinct DATENAME( 'mm', date_time) as MonthName from temperature ", cn);
但是当我运行我的asp.net网站时,我得到以下异常:
Exception Details: System.Data.OleDb.OleDbException: Undefined function 'DATENAME' in expression.
PS:之后我会将这些字符串值放在下拉列表中(该步骤没有问题)。 那么有人能告诉我该怎么做吗?
谢谢!
答案 0 :(得分:3)
对于Access,语法应为:
SELECT DISTINCT MonthName(Month ( date_column )) as MonthName from temperature
因为MonthName
函数需要一个Integer而Month
函数返回Month的Integer值。
答案 1 :(得分:2)
您可以使用Month()
功能获取给定日期的月份数,然后将其提供给MonthName()
功能。
SELECT distinct MonthName(Month(date_time)) as [MonthName]
from temperature
别名 MonthName 是一个保留字,所以我将别名括在方括号中。
获得所需内容的另一种方法是使用Format()
函数。
SELECT distinct Format(date_time, 'mmmm') as [MonthName]
from temperature
我不确定哪个更快;你可以尝试两种方式。