1

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

谢谢!

4

2 回答 2

3

对于 Access,语法应该是:

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

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

有关完整的详细信息,请参见此处此处

于 2013-01-09T20:48:35.063 回答
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

我不确定哪个会更快;你可以两个都试试。

于 2013-01-09T20:48:09.290 回答