zoukankan      html  css  js  c++  java
  • [转]DATEDIFF与dateadd在access和mssql下的使用例子

    Access中:DateDiff('d',Time1,Time2)
    Sql中:DateDiff(d,Time1,Time2)
    下面是我自己的sql语句
    '判断数据库类型
    IF IsSqlDataBase = 1 Then
    Conn.execute("Delete from lyt_log_info where datediff(day,logintime,getdate())>=3 ")
    Else
    Conn.execute("Delete from lyt_log_info where datediff('d',logintime,now())>=3")
    End IF

    sql中d 或者day的引号不要 注意后面获得系统时间的函数是不同的
    如在access中使用
    Conn.execute("Delete from lyt_log_info where datediff(day,logintime,getdate())>=3 ")
    则会提示
    Microsoft JET Database Engine (0x80040E14)
    表达式中 'getdate' 函数未定义。
    如在access中day或者w y等不加引号,会提示至少没有一个参数被指定

    例子:

    Response.write "离2007-9-18还有"&datediff("d",now(),"2007-9-18")&"天"
    距离某一天还有多少天,你可以修改下参数 ""d"" 算出距离某天还有多少月 多少week 多少 hour




    注:DateDiff 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。为了计算 date1 与 date2 相差的日数,可以使用“一年的日数”(y) 或“日”(d)。当 interval 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果 date1 是星期一,DateDiff 计算到 date2 为止的星期一的个数。这个数包含 date2 但不包含 date1。不过,如果 interval 是“周”(ww),则 DateDiff 函数返回两日期间的“日历周”数。由计算 date1 与 date2 之间星期日的个数而得。如果 date2 刚好是星期日,则 date2 也会被加进 DateDiff 的计数结果中;但不论 date1 是否为星期日,都不将它算进去。如果 date1 比 date2 来得晚,则 DateDiff 函数的返回值为负数。firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。如果 date1 或 date2 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 date1 或 date2 用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 date1 或 date2 时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。


    DateAdd 和 DateDiff 的第一个参数
    DateAdd 返回一个日期加上特定时间间隔后的值。
    语法:DateAdd(interval, number, date)
    interval 表示时间单位,即指示 number 是表示年,还是月,还是分,还是其它的,如下:
    yyyy 年
    q 季度
    m 月
    y 一年的日数
    d 日
    w 一周的日数
    ww 周
    h 小时
    n 分钟
    s 秒
    不好理解的是:y、w,开始我以为 y 的单位是 365天,w 的单位是 7天。其实不是的,细读了微软参考并作了测试后发现,这其中 y、w、d 是同意义的,表示天数。
    另外,DateDiff 的第一个参数中 y 和 d 是同意义的,w 不再与 d 同意义,而是表示相隔多少个 7天,这与 ww 不同。假如今天是一周的第一天,至于星期几是一周的第一天得看计算机设置和第四个参数了,那么今天与昨天相隔 0 个 w,相隔 1 个 ww,因为今天与昨天相差不足 1 个 7天,但今天已经是另外一周了。
    很难想像吧,但事实就是这样,总结一下。

    不同
    1、数据库的问题,Access和Sql读取时间的函数不一样,Now()只能在Access中使用,在Sql中只能使用GetDate()函数来获取系统时间,相应的其他函数如Time(),反正大家在调试的时候注意下

    2、就是DateDiff('d',Time1,Time2),刚开始的时候我专数据库ACCESS专SQL发现这个函数怎么调试在多不能通过,在ACCESS下可以使用的到了SQL就不能使用,郁闷~~~

    具体是:

    Access中:DateDiff('d',Time1,Time2)

    Sql中:DateDiff(d,Time1,Time2)
    下面是我自己的sql语句
    '判断数据库类型
    IF IsSqlDataBase = 1 Then
    Conn.execute("Delete from lyt_log_info where datediff(day,logintime,getdate())>=3 ")
    Else
    Conn.execute("Delete from lyt_log_info where datediff('d',logintime,now())>=3")
    End IF

    sql中d 或者day的引号不要 注意后面获得系统时间的函数是不同的
    如在access中使用
    Conn.execute("Delete from lyt_log_info where datediff(day,logintime,getdate())>=3 ")
    则会提示
    Microsoft JET Database Engine (0x80040E14)
    表达式中 'getdate' 函数未定义。
    如在access中day或者w y等不加引号,会提示至少没有一个参数被指定

    dateAdd

    DateAdd 函数
    返回已添加指定时间间隔的日期。

    DateAdd(interval, number, date)

    参数
    interval

    必选项。字符串表达式,表示要添加的时间间隔。有关数值,请参阅“设置”部分。

    number

    必选项。数值表达式,表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。

    date

    必选项。Variant 或要添加 interval 的表示日期的文字。

    设置
    interval 参数可以有以下值:
    设置 描述
    yyyy 年
    q 季度
    m 月
    y 一年的日数
    d 日
    w 一周的日数
    ww 周
    h 小时
    n 分钟
    s 秒
    '---------------------------------
    可用 DateAdd 函数从日期中添加或减去指定时间间隔。例如可以使用 DateAdd 从当天算起 30 天以后的日期或从现在算起 45 分钟以后的时间。要向 date 添加以“日”为单位的时间间隔,可以使用“一年的日数”(“y”)、“日”(“d”)或“一周的日数”(“w”)。

    DateAdd 函数不会返回无效日期。如下示例将 95 年 1 月 31 日加上一个月:

    NewDate = DateAdd("m", 1, "31-Jan-95")
    在这个示例中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31 日。如果 date 为 96 年 1 月 31 日,则返回 96 年 2 月 29 日,这是因为 1996 是闰年。

    如果计算的日期是在公元 100 年之前,则会产生错误。

    如果 number 不是 Long 型值,则在计算前四舍五入为最接近的整数。
  • 相关阅读:
    retain assign copy (unsigned long)
    myeclipse未设置断点,但不断跳出debug
    SOAP tomcat7.0 HelloWorld
    JAVA第二天数据类型和循环
    java中产生随机数的几种方法
    java的第一个程序 Hello World
    java中产生随机数的几种方法
    用加减来简单的看策略类
    用加减来简单的看策略类
    奇数阶幻方
  • 原文地址:https://www.cnblogs.com/Don/p/1222094.html
Copyright © 2011-2022 走看看