DATEDIFF与dateadd在access和mssql下的使用例子

原创 2007年09月26日 15:15:00
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 型值,则在计算前四舍五入为最接近的整数。

相关文章推荐

MSSQL的datediff/dateadd函数用法备忘

Datediff:返回跨两个日期的日期和时间边界数 语法:Datediff(datepart,startdate,enddate) datepart 是规定了应在日期的哪一部分计算差额的参...
  • yw1688
  • yw1688
  • 2014年03月29日 13:53
  • 407

SQL中DATEADD和DATEDIFF的使用方法

DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期,DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。 SQL Server DATEADD() 函数 ...

使用DATEADD和DATEDIFF来计算SQL Server的DATETIME值

在SQL Server数据库中,DATETIME和SMALLDATETIME值是以整数存储的。然而,与整数不同的是,它们不能直接地进行数学运算。尽管如此,有时候还是需要在日期/时间值中添加或减去一个时...

dateadd与datediff时间段查询代码

  • 2009年07月13日 11:32
  • 2KB
  • 下载

SQL中DATEADD和DATEDIFF的用法

通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函...
  • upi2u
  • upi2u
  • 2014年07月15日 22:05
  • 1214

SQL中DATEADD和DATEDIFF的用法

  • 2010年05月31日 18:46
  • 37KB
  • 下载

SQL Server 日期的加减函数: DATEDIFF DATEADD

SQL Server 日期的加减函数: DATEDIFF    DATEADDDATEDIFF: 返回跨两个指定日期的日期边界数和时间边界数, 语法:DATEDIFF ( datepart , sta...
  • xyzqiang
  • xyzqiang
  • 2011年06月30日 17:50
  • 102929

js版的dateAdd与dateDiff

/* 得到日期年月日等加数字后的日期 */ Date.prototype.dateAdd = function(interval,number) { var d = this; ...
  • dd0607
  • dd0607
  • 2012年08月31日 10:29
  • 298

js操作日期(函数,js版的dateAdd与dateDiff)

var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DATEDIFF与dateadd在access和mssql下的使用例子
举报原因:
原因补充:

(最多只允许输入30个字)