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 参数可以有以下设置。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)枚举值 值 说明
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 变量的完整日期值,如下所示:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)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