access中datepart函数使用

 

ACCESS数据库
 
想要从表中日期字段中取出所需要的格式。
如:表中有个date字段,数据如下:
2003-12-05
2004-4-02
2004-4-20
 
 
取出的数据想成为这样:
2003-12
2004-4
以年份和月份来分组。
 
这个应该很简单,使用sql的datepart函数搞定,可恶的是,access中竟没有这个函数的详细帮助。
select datepart(year,xx) from yy 错误
select datepart('year',xx) form yy 错误
......
 
最后还是在MSDN上找到了“ Visual Basic 语言参考  

DatePart 函数”
详细表述如下:

  

DatePart 函数
返回一个 Integer 值,其中包含给定 Date 值的指定组件。

Public Overloads Function DatePart( _
   ByVal Interval As DateInterval, _
   ByVal DateValue As DateTime, _
   Optional ByVal FirstDayOfWeekValue As FirstDayOfWeek = VbSunday, _
   Optional ByVal FirstWeekOfYearValue As FirstWeekOfYear = VbFirstJan1 _
) As Integer
- 或 -

Public Overloads Function DatePart( _
    ByVal Interval As String, _
   ByVal DateValue As Object, _
   Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
   Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Integer
参数
Interval 
必选项。DateInterval 枚举值或 String 表达式,它表示所要返回的日期/时间值部分。 
DateValue 
必选项。所要计算的 Date 值。 
FirstDayOfWeekValue 
可选项。选自 FirstDayOfWeek 枚举的值,该枚举用于指定周的第一天。若未指定,则使用 FirstDayOfWeek.Sunday。 
FirstWeekOfYearValue 
可选项。选自 FirstWeekOfYear 枚举的值,该枚举用于指定年的第一周。若未指定,则使用 FirstWeekOfYear.Jan1。 
设置
Interval 参数可以有以下设置。

枚举值 字符串 所要返回的日期/时间值部分 
DateInterval.Day  d 月中的哪一天(从 1 到 31) 
DateInterval.DayOfYear  y 年中的哪一天(从 1 到 366) 
DateInterval.Hour  h 小时 
DateInterval.Minute  n  分钟 
DateInterval.Month  m 月 
DateInterval.Quarter  q  季度 
DateInterval.Second  s 秒钟 
DateInterval.Weekday  w 星期几(从 1 到 7) 
DateInterval.WeekOfYear  ww  年中的哪一周(从 1 到 53) 
DateInterval.Year  yyyy 年 

FirstDayOfWeekValue 参数可以有以下设置。

枚举值 值 说明 
FirstDayOfWeek.System  0  系统设置中指定的周的第一天  
FirstDayOfWeek.Sunday  1  星期日(默认) 
FirstDayOfWeek.Monday  2  星期一(依照 ISO 8601 标准第 3.17 节)  
FirstDayOfWeek.Tuesday  3  星期二 
FirstDayOfWeek.Wednesday  4  星期三 
FirstDayOfWeek.Thursday  5  星期四 
FirstDayOfWeek.Friday  6  星期五 
FirstDayOfWeek.Saturday  7  星期六 

FirstWeekOfYearValue 参数可以有以下设置。

枚举值 值 说明 
FirstWeekOfYear.System  0  系统设置中指定的年的第一周 
FirstWeekOfYear.Jan1  1  1 月 1 日所在的周(默认) 
FirstWeekOfYear.FirstFourDays  2  至少有四天属于新年的周(依照 ISO 8601 标准第 3.17 节) 
FirstWeekOfYear.FirstFullWeek  3  新年的第一个全周 

异常/错误
异常类型 错误号 条件 
ArgumentException 5 Interval 无效。  
InvalidCastException 13 DateValue 不能被强制为 Date。 

备注
可以使用 DatePart 函数来计算日期/时间值并返回一个特定组件。例如,可以使用 DatePart 计算某个日期是星期几或目前为几点钟。

若为 Interval 参数选择 DateInterval.Weekday,返回的值与 FirstDayOfWeek 枚举的值一致。若选择 DateInterval.WeekOfYear,DatePart 使用 System.Globalization 命名空间的 Calendar 和 CultureInfo 类来确定当前设置。

FirstDayOfWeekValue 参数会影响使用 DateInterval.Weekday 和 DateInterval.WeekOfYear Interval 设置所进行的计算。FirstWeekOfYearValue 参数影响为 Interval 指定 DateInterval.WeekOfYear 的计算。

如果有任何参数的值无效,就会发生 ArgumentException 错误。若 DateValue 参数值无法被强制为有效的 Date 值,则会发生 InvalidCastException 错误。

因为每个 Date 值都由 DateTime 结构支持,其方法在检索日期/时间部分中提供了额外的选项。例如,将时间值设置为午夜,可以获取 Date 变量的完整日期值,如下所示:

Dim CurrDatTim As Date = Now   ' Current date and time.
Dim LastMidnight As Date = CurrDatTim.Date   ' At midnight.
示例
本示例取得一个日期,并使用 DatePart 函数显示该日期所在的季度。

Dim FirstDate, Msg As String   'Declare variables.
Dim SecondDate As Date
FirstDate = InputBox("Enter a date:")
SecondDate = CDate(FirstDate)
Msg = "Quarter: " & DatePart(DateInterval.Quarter, SecondDate)
MsgBox (Msg)
最后写为:
select (cstr(datepart('yyyy',xx'-'+cstr(datepart('m',xx))) from yy
 

你可能感兴趣的:(access中datepart函数使用)