Access日期与时间函数汇总 |
本文标签:日期函数,时间函数 今日在开发系统的时候,需求实现这样一个 性能 依据选中的日期, 查问 有关的内容,但不是依照整个日期去过滤,而是依据,年,月,日拆分的 模式去过滤, 比方2013年的,2月份的 在sqlserver中,我们 可以 可以直接依据datePart去 实现即可 select * from pays where 1=1 and datepart(year, pdate)=2013 and datepart(month, pdate)=2 and datepart(day, pdate)=26 order by pdate 然而在access中却通不过,由于 步骤有些不一样,需求这样写 select * from pays where 1=1 and datepart("yyyy", pdate)=2013 and datepart("m", pdate)=2 and datepart(d, pdate)=21 order by pdate 对于sqlserver的函数在前面说到了,现在把access的日期函数总结一下 如何将文本型:2003.08.04 转换为日期型:2003-08-04 显示目前日期在该年中所处的礼拜号 ww 为 1 到 53 。 显示日期字段值的四位年份值 。 显示日期字段值前 10 天的日期值 。 显示日期字段值前一个月的日期值 。 显示日期1和日期2中间相差的天数 。 从今日算起到三个月后的日期中间的记录 。 依据
诞生日期计算年龄(周岁) 自定义日期/
工夫
格局 (Format 函数) (/) 日期分隔符 。在一些区域,可能用 其余符号来当日期分隔符 。 格局化日期数值时,日期分隔符 可以分隔年、月、日 。日期分隔符的真正字符在 格局输出时取决于系统设置 。 C 以 ddddd 来显示日期而且以 ttttt 来显示 工夫 。假如想显示的数值无小数 部分,则只显示日期 部分,假如想显示的数值无整数 部分,则只显示 工夫 部分 。 D 以没有前导零的数字来显示日 (1 – 31) 。 Dd 以有前导零的数字来显示日 (01 – 31) 。 ddd 以简写来 示意日 (Sun –Sat) 。 dddd 以全称来 示意日 (Sunday –Saturday) 。 ddddd 以 完全日期 示意法显示(包含年、月、日),日期的显示要依系统的短日期 格局设置而定 。缺省的短日期 格局为 m/d/yy 。 dddddd 以 完全日期 示意法显示日期系列数(包含年、月、日),日期的显示要依系统 鉴别的长日期 格局而定 。缺省的长日期 格局为 mmmm dd, yyyy 。 aaaa 与dddd 一样,它只不过该字符串的当地化版本 。 W 将一周中的日期以数值 示意(1 表礼拜日' 7表礼拜六) 。 ww 将一年中的礼拜以数值 示意 (1 – 54) 。 M 以没有前导零的数字来显示月 (1 – 12) 。假如 m 是直接跟在 h 或 hh 之后,那么显示的将是分而不是月 。 mm 以有前导零的数字来显示月 (01 – 12) 。假如m是直接跟在h或hh之后,那么显示的将是分而不是月 。 mmm 以简写来 示意月 (Jan –Dec) 。 mmmm 以全称来 示意月 (January –December) 。 oooo 与mmmm一样,它只不过该字符串的当地化版本 。 Q 将一年中的季以数值 示意 (1 – 4) 。 Y 将一年中的日以数值 示意 (1 – 366) 。 Yy 以两位数来 示意年 (00 – 99) 。 yyyy 以四位数来 示意年 (00 – 99) 。 H 以没有前导零的数字来显示小时 (0 – 23) 。 Hh 以有前导零的数字来显示小时 (00– 23) 。 N 以没有前导零的数字来显示分 (0 – 59) 。 Nn 以有前导零的数字来显示分 (00 – 59) 。 S 以没有前导零的数字来显示秒 (0 – 59) 。 Ss 以有前导零的数字来显示秒 (00 – 59) 。 t t t t t 以 完全 工夫 示意法显示(包含时、分、秒),用系统 鉴别的 工夫 格局定义的 工夫分隔符进行 格局化 。假如 取舍有前导零而且 工夫是在 10:00 A.M. 或 P.M.之前,那么将显示有前导零的 工夫 。缺省的 工夫 格局为 h:mm:ss 。 AM/PM 在中午前以 12 小时配合大写 AM 符号来 使用;在中午和 11:59 P.M.间以 12 小时配合大写 PM 来 使用 。 Am/pm 在中午前以 12 小时配合小写 am 符号来 使用;在中午和 11:59 P.M.间以 12 小时配合小写 pm 来 使用 。 A/P 在中午前以 12 小时配合大写A符号来 使用;在中午和 11:59 P.M.间以12 小时配合大写P来 使用 。 a/p 在中午前以 12 小时配合小写a符号来 使用;在中午和 11:59 P.M.间以 12 小时配合小写p来 使用 。 AMPM 在中午前以 12 小时配合系统设置的 AM字符串文字来 使用;在中午和 11:59 P.M. 间以 12 小时配合系统设置的 PM 字符串文字来 使用 。AMPM 可以是大写或小写,但必须和您的系统设置相配 。其缺省 格局为 AM/PM 。 日期函数示例 当日:=Day(date) 当月:=Month(date()) 当年:=Year(date()) 当季:=DatePart("q",Date()) 把日期大写 Dim num(10) Dim iYear Dim iMonth Dim iDay num(0) = "〇" num(1) = "一" num(2) = "二" num(3) = "三" num(4) = "四" num(5) = "五" num(6) = "六" num(7) = "七" num(8) = "八" num(9) = "九" iYear = Year(iDate) iMonth = Month(iDate) iDay = Day(iDate) Date2Chinese = num(iYear \ 1000) + _ num((iYear \ 100) Mod 10) + num((iYear \ 10) Mod 10) + num(iYear Mod 10) + "年" If iMonth >= 10 Then If iMonth = 10 Then Date2Chinese = Date2Chinese +"十" + "月" Else Date2Chinese = Date2Chinese +"十" + num(iMonth Mod 10) + "月" End If Else Date2Chinese = Date2Chinese +num(iMonth Mod 10) + "月" End If If iDay >= 10 Then If iDay = 10 Then Date2Chinese = Date2Chinese +"十" + "日" ElseIf iDay = 20 Or iDay = 30 Then Date2Chinese = Date2Chinese + num(iDay \ 10) + "十" + "日" ElseIf iDay > 20 Then Date2Chinese = Date2Chinese + num(iDay \ 10) + "十" + num(iDay Mod 10) + "日" Else Date2Chinese = Date2Chinese + "十" + num(iDay Mod 10) + "日" End If Else Date2Chinese = Date2Chinese + num(iDay Mod 10) + "日" End If End Function 算出每个月的天数 Dim a, b, c a = Year(Now()) b = Month(Now()) c = Format((a & "/" & b + 1 & "/1"), "######") - Format((a & "/" & b & "/1"), "######") 二法: DateDiff("d", Format(Date, "yyyy-mm-01"), Format(DateAdd("m", -1, Date), "yyyy-mm-01")) DateDiff 可以算出两个日期中间相差几天! 三法: Day(DateAdd("d", -1, Format(Date, "yyyy-mm-01")))
day函数 可以晓得某个日期是这个月的第几天,我们把这个月的最终一天拿出来DAY一下!应该还有更好的 步骤! 比方说 可以定义一个数组,把每个月的日子放进去,或者说写一个函数算每一个月的天数 惟独考量一下闺年的问题就 可以了! 如何得到某年每个月的第一天是礼拜几 Dim i As Integer, A As Integer, B As Integer, C As String A = InputBox("请输入年份", "某年每个月的第一天是礼拜几") Form1.Cls For i = 1 To 12 C = A & "-" & i & "-1" B = Weekday(C) Select Case B Case vbSunday Print A & "年" & i & "月1日是 礼拜日" Case vbMonday Print A & "年" & i & "月1日是 礼拜一" Case vbTuesday Print A & "年" & i & "月1日是 礼拜二" Case vbWednesday Print A & "年" & i & "月1日是 礼拜三" Case vbThursday Print A & "年" & i & "月1日是 礼拜四" Case vbFriday Print A & "年" & i & "月1日是 礼拜五" Case vbSaturday Print A & "年" & i & "月1日是 礼拜六" End Select Next i End Sub 计算天数及月初月末日期 本月天数 = DateSerial(Year(日期), Month(日期) + 1, Day(日期)) - 日期 End Function Function 月末(日期 As Date) As Date 月末 = DateSerial(Year(日期), Month(日期) + 1, 1) - 1 End Function Function 月初(日期 As Date) As Date 月初 = 日期 - Day(日期) + 1 End Function 本月最终一日是周几 Weekday(DateAdd("m",1,DateSerial(Year(Date()),Month(Date()),1)-1)) AS 本月最终一日是周几, 下月最终一日是周几 Weekday(DateAdd("m",2,DateSerial(Year(Date()),Month(Date()),1)-1)) AS 下月最终一日是周几, 本月最终一个周5到月底的天数 (Weekday(DateAdd("m",1,DateSerial(Year(Date()),Month(Date()),1)-1))+1) Mod 7 AS 本月最终一个周5到月底的天数; 下月最终一个周5到月底的天数 (Weekday(DateAdd("m",2,DateSerial(Year(Date()),Month(Date()),1)-1))+1) Mod 7 AS 下月最终一个周5到月底的天数; 本月最终一个周5的日期 DateAdd("m",1,DateSerial(Year(Date()),Month(Date()),1))-1-(Weekday(DateAdd("m",1,DateSerial(Year(Date()),Month(Date()),1)-1))+1) Mod 7 AS 本月最终一个周5的日期; 下月最终一个周5的日期 DateAdd("m",2,DateSerial(Year(Date()),Month(Date()),1))-1-(Weekday(DateAdd("m",2,DateSerial(Year(Date()),Month(Date()),1)-1))+1) Mod 7 AS 下月最终一个周5的日期; 多思量,多创新,才是正道! |