• 益阳网站建设

    益阳网站建设是专业的网站制作和网站优化SEO的益阳网络公司
    项目经理直线: 0737-3666343 18973746816
    网站首页 > > 新闻动态 > 建站指南 > > 正文

    垂询热线

    3303609113@qq.com

    3303609113 / 275100931

    3303609113@qq.com

    建站指南

    让浏览者喜欢,让客户获益是最高原则。

    Access时间日期比较,以及access与SQL2000日期查询处理比较方法

    日期: 2015-1-5 17:05:20 点击: 标签:

    分享到: 更多

    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#)
    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 )

    Access数据库和SQL2000 时间日期查询处理比较方法

    access与SqlServer 之时间与日期及其它SQL语句比较

    1、Datediff:

    1.1算出日期差:
    1.access:       datediff('d',fixdate,getdate())
    2.sqlserver:    datediff(day,fixdate,getdate())
    ACCESS实例:    select * from table where data=datediff('d',fixdate,getdate())
    sqlserver实例: select * from table where data=datediff(day,fixdate,getdate())

    1.2算出时间差:
    1.access:       datediff('h',fixdate,getdate())
    2.sqlserver:    datediff(Hour,'2004-12-10',getdate())
    ACCESS实例:    select DATEDIFF('h',HMD,getdate())
    sqlserver实例: select datediff(Hour,'2004-12-10',getdate())

    1.3算出月份差:
    1.access:       datediff('m',fixdate,getdate())
    2.sqlserver:    datediff(Month,'2004-12-10',getdate())
    ACCESS实例:    select DATEDIFF('m',HMD,getdate())
    sqlserver实例: select datediff(Month,'2004-12-10',getdate())

    2、日期变量
    1.access:       #"&data&"#
    2.sqlserver:    '"&data&"'
    ACCESS实例:    select * from table where data=#"&data&"#
    sqlserver实例: select * from table where data='"&data&"'

    3、是否
    1.access:       not finished
    2.sqlserver:    finished=0
    ACCESS实例:    select * from table where not finished
    sqlserver实例: select * from table where finished=0

    4、求余数

    1.access:       a mod b=100
    2.sqlserver:    a % b =100
    ACCESS实例:    select   a mod b=100 from table where not finished
    sqlserver实例: select a % b =100 from table where finished=0

    5、获取当天日期
    1.access:       now()
    2.sqlserver:    getdate()
    ACCESS实例:    select   now()
    sqlserver实例: select getdate()


    本文网址:

    垂询热线

    18973746816
    展开悬浮客服
    回到顶部
    5544444