Access时间⽇期⽐较查询的⽅法总结
Access⽇期时间⽐较查询语句困扰过很多⽹友,种⾖⽹整理了⼀下Access⽇期⽐较查询的⼏种⽅法,假定数据表明为TblName,⽇期/时间字段名为FDate(这⾥不能讲FDate设置为字符串,否则⽐较查询结果不正确)。
1.Access数据表⽇期字段同⽇期字符串直接⽐较
以下是查询2012年12⽉12⽇以后的数据的SQL语句。
select * from TblName where DFDate>#2012-12-12#
注意:Access⽇期查询时,表⽰⽇期的字符串前后要加#
2.Access数据表⽇期字段同⽇期类型变量直接⽐较
这种⽅法其实等同于⽅法⼀,以下是查询⽐当前⽇期(如2012-12-12)早10天的数据的SQL语句。
DateTime queryDate=DateTime.Now.AddDays(-10);
string sql = "select * from TblName where DFDate>#"+queryDate+"#";
3.使⽤DateDiff函数对Access⽇期字段⽐较查询
DateDiff,语法如下:
DateDiff( 间隔字符, ⽇期1, ⽇期2 [,firstdayofweek[, firstweekofyear]])
通常只需要使⽤以下⽅式
DateDiff( 间隔字符, ⽇期1, ⽇期2)
这个函数⽐较的结果是“⽇期2-⽇期1”,如果⽇期1晚于⽇期2,就会返回负数,其中间隔字符有以下⼏种表⽰⽅式:
"yyyy" ⽐较年份
"d"    ⽐较⽇期
"m"    ⽐较⽉份
⽰例如下:
select DateDiff( "d", #2012-12-12#, #2012-12-2#)
SQL查询结果是:-10,表⽰前⾯的⽇期⽐后⾯的⽇期晚10天
select DateDiff( "m", #2012-10-12#, #2012-12-2#)datediff是字符型函数
SQL查询结果是:2,表⽰前⾯的⽇期⽐后⾯的⽇期早两个⽉
select DateDiff( "yyyy", #2012-10-12#, #2010-12-2#)
SQL查询结果是:-2,表⽰前⾯的⽇期⽐后⾯的⽇期晚两年
以下是Access使⽤DateDiff函数查询2012年12⽉12⽇以后的数据的SQL语句。
select * from TblName where DateDiff( "d", DFDate, #2012-12-12#)<0
4.使⽤DateDiff函数查询Access⽇期字段等于某个⽇期的SQL语句
假定数据库中某条记录的FDate=2012-12-12 12:12:12
以下语句的查询结果为0条记录,因为数据库中还包含时间信息,⽽查询条件中⽆时间信息。
select * from TblName where FDate=#2012-12-12#
如果想得到正确的查询结果(1条记录),则需要使⽤以下SQL语句查询(查询⽇期为2012年12⽉12⽇的数据记录)。
select * from TblName where DateDiff( "d", FDate, #2012-12-12#) <=0 AND DateDiff( "d", FDate, #2012-12-12#)>=0
5.要查询出签收时间在处理时间的第⼆天的14:00:00以前的数据
Select 签收时间,CDate(Format(DateAdd("d", 1,处理时间),"yyyy-mm-dd")+" 14:00:00") from 表 where 签收时
间 < CDate(Format(DateAdd("d", 1, 处理时间),"yyyy-mm-dd")+" 14:00:00")
下⾯的语句查询出签收时间在当天或是在第⼆天的14:00:00之前的所有数据
select * from table where DATEDIFF(D,CONVERT(datetime,[处理时间],120),CONVERT(datetime,[签收时间],120))<1 or (DATEDIFF(D,CONVERT(datetime,[处理时间],120),CONVERT(datetime,[签收时间],120))=1 and
DATEPART(HOUR,CONVERT(datetime,[签收时间],120))<14 )

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。