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
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) + "⽉"datediff是字符型函数
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⽇是星期六"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
VB常用字符和日期等函数
« 上一篇
SQL_SERVER日期函数
下一篇 »
发表评论