• 售前

  • 售后

热门帖子
入门百科

Access日期与时间函数汇总

[复制链接]
Jacqueline季 显示全部楼层 发表于 2021-8-14 15:07:52 |阅读模式 打印 上一主题 下一主题
今天在开辟系统的时候,必要实现这样一个功能

     根据选中的日期,查询干系的内容,但不是按照整个日期去过滤,而是根据,年,月,日拆分的形式去过滤,比如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
cdate(replace("2003.08.04",".","-"))
表现当前日期在该年中所处的星期号
=Format(Now(), "ww")
ww 为 1 到 53。
表现日期字段值的四位年份值。
=DatePart("yyyy", [订购日期])
表现日期字段值前 10 天的日期值。
=DateAdd("y", -10, [应付日期])
表现日期字段值前一个月的日期值。
=DateAdd("m",-1,Date())
表现日期1和日期2之间相差的天数。
=DateDiff("d", [订购日期], [发货日期])
从今天算起到三个月后的日期之间的记载。
Betweeb date() and adddate(3,date())
根据出生日期计算年事(周岁)
=IIf(Month(Date())-Month([出生年代日])>-1,Year(Date())-Year([出生年代日]),Year(Date())-Year([出生年代日])-1)
自界说日期/时间格式 (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。
日期函数示例
当天日期:=Date()
当日:=Day(date)
当月:=Month(date())
当年:=Year(date())
当季:=DatePart("q",Date())
把日期大写
Function Date2Chinese(iDate)
    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一下!应该另有更好的方法!比如说可以界说一个数组,把每个月的日子放进去,大概说写一个函数算每一个月的天数只要思量一下闺年的问题就可以了!
怎样得到某年每个月的第一天是星期几
Private Sub Command1_Click()
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
计算天数及月初月末日期
Function 本月天数(日期 As Date) As Byte
本月天数 = 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
本月最后一日是周几
SELECT
Weekday(DateAdd("m",1,DateSerial(Year(Date()),Month(Date()),1)-1)) AS 本月最后一日是周几,
下月最后一日是周几
SELECT
Weekday(DateAdd("m",2,DateSerial(Year(Date()),Month(Date()),1)-1)) AS 下月最后一日是周几,
本月最后一个周5到月尾的天数
SELECT
(Weekday(DateAdd("m",1,DateSerial(Year(Date()),Month(Date()),1)-1))+1) Mod 7 AS 本月最后一个周5到月尾的天数;
下月最后一个周5到月尾的天数
SELECT
(Weekday(DateAdd("m",2,DateSerial(Year(Date()),Month(Date()),1)-1))+1) Mod 7 AS 下月最后一个周5到月尾的天数;
本月最后一个周5的日期
SELECT
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的日期
SELECT
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的日期;
多思考,多创新,才是正道!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作