加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

sql里求2个时间之间的天数差的函数 DateDiff

(2011-04-10 16:13:40)
标签:

杂谈

分类: SQL

sql里求2个时间之间的天数差的函数 DateDiff

 

返回变量型长型),指定两个指定的日期之间的时间间隔数。

 

语法

DateDiff(interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )

DateDiff 函数的语法包含以下参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。)

参数 说明
interval 必选。字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。),该表达式为用于计算 date1date2 之间的差的时间间隔。
date1, date2 必选。变量型日期型)。表示两个要用于计算的日期。
firstdayofweek 可选。常量 (常量:不进行计算的值,因此也不会发生变化。例如,数字 210 以及文本“每季度收入”都是常量。表达式以及表达式产生的值都不是常量。),指定一周的第一天。如果不指定,则默认为星期日。
firstweekofyear 可选。常量,指定一年的第一周。如果不指定,则第一周默认为 1 月 1 日所在的周。

设置

interval 参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。)包含以下设置:

设置 说明
yyyy
q 季度
m
y 某年的某一天
d
w 工作日
ww
h
n
s

firstdayofweek 参数包含以下设置:

常量 说明
vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 星期日(默认)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

常量 说明
vbUseSystem 0 使用 NLS API 设置。
vbFirstJan1 1 从 1 月 1 日所在的周开始(默认)。
vbFirstFourDays 2 从至少包含新年中四天的第一周开始。
vbFirstFullWeek 3 从一年的第一个全周开始。

注解

可以使用 DateDiff 函数确定在两个日期之间存在多少指定的时间间隔。例如,可以使用 DateDiff 计算两个日期之间的天数或今天到年末之间的周数。

若要计算 date1date2 之间的天数,可以使用“某年的某一天”(“y”) 或“天”(“d”)。当 interval 为“工作日”(“w”) 时,DateDiff 返回两个日期之间的周数。如果 date1 为星期一,则 DateDiff 会计算 date2 之前的星期一的个数。它会将 date2 计算在内,但不会将 date1 计算在内。但是,如果 interval 为“周”(“ww”),DateDiff 函数将返回两个日期之间的日历周数。它会计算 date1date2 之间的星期日的个数。如果 date2 为星期日,则 DateDiff 会将其计算在内;但即使 date1 为星期日,也不会将其计算在内。

如果 date1 引用了比 date2 晚的时间点,则 DateDiff 函数返回一个负数。

firstdayofweek 参数会影响使用“w”和“ww”间隔符号的计算。

如果 date1date2日期文本 (日期文本:具有有效格式的任意字符序列,两边由编号符号 (#) 括起。有效格式包括由代码的区域设置指定的日期格式或通用的日期格式。),则指定的年会成为日期的永久部分。但是,如果 date1date2 括在双引号 (" ") 中,并且省略了年份,则每次计算 date1date2 表达式时,当前年份都会插入代码中。这样即可编写用于不同年份的代码。

将 12 月 31 日与来年的 1 月 1 日相比较时,对于“年”("yyyy"),即使仅过去一天,DateDiff 也返回 1。

 

示例:

在表达式中使用 DateDiff 函数    在任何可以使用表达式的地方都可以使用 DateDiff 函数。例如,假定您具有一个用来履行客户订单的窗体。在“订单 (Orders)”表中,有一个名为“到货日期 (ReceiveBefore)”的字段,其中包含客户需要接收所订货物的日期。您可以使用 DateDiff 函数以及窗体上的文本框显示到必须送货的日期所剩余的天数。

假定送货需要十天时间,则可如下设置文本框的“控件来源”属性:

=DateDiff(“d”, Now(), [Orders].[ReceiveBefore])-10

在窗体视图中打开窗体时,文本框会显示到必须送货的日期前剩余的天数。如果到客户需要收货的日期的天数少于 10 天,则文本框中的数字为负数,指示如果立即送货客户收货时间的延迟天数。

 

以下语句在ACCESS 2007中测试通过:

SELECT area, sum(sales) AS xiaoliang, renwu, (renwu-xiaoliang) AS renwucha, Datediff('d',#2011-4-2#,#2011-12-31#) AS aa
FROM sale
WHERE saledate between #2011-4-1# and #2011-4-2#
GROUP BY area, renwu;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有