从月份获取月份名称到下拉列表

时间:2013-01-09 20:42:45

标签: asp.net sql ms-access

我有一个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:之后我会将这些字符串值放在下拉列表中(该步骤没有问题)。 那么有人能告诉我该怎么做吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

对于Access,语法应为:

SELECT DISTINCT MonthName(Month ( date_column )) as MonthName from temperature

因为MonthName函数需要一个Integer而Month函数返回Month的Integer值。

有关完整详情,请参阅herehere

答案 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

我不确定哪个更快;你可以尝试两种方式。