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。),该表达式为用于计算 date1 和 date2 之间的差的时间间隔。 |
| 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 计算两个日期之间的天数或今天到年末之间的周数。
若要计算 date1 和 date2 之间的天数,可以使用“某年的某一天”(“y”) 或“天”(“d”)。当 interval 为“工作日”(“w”) 时,DateDiff 返回两个日期之间的周数。如果 date1 为星期一,则 DateDiff 会计算 date2 之前的星期一的个数。它会将 date2 计算在内,但不会将 date1 计算在内。但是,如果 interval 为“周”(“ww”),DateDiff 函数将返回两个日期之间的日历周数。它会计算 date1 和 date2 之间的星期日的个数。如果 date2 为星期日,则 DateDiff 会将其计算在内;但即使 date1 为星期日,也不会将其计算在内。
如果 date1 引用了比 date2 晚的时间点,则 DateDiff 函数返回一个负数。
firstdayofweek 参数会影响使用“w”和“ww”间隔符号的计算。
如果 date1 或 date2 为日期文本 (日期文本:具有有效格式的任意字符序列,两边由编号符号 (#) 括起。有效格式包括由代码的区域设置指定的日期格式或通用的日期格式。),则指定的年会成为日期的永久部分。但是,如果 date1 或 date2 括在双引号 (" ") 中,并且省略了年份,则每次计算 date1 或 date2 表达式时,当前年份都会插入代码中。这样即可编写用于不同年份的代码。
将 12 月 31 日与来年的 1 月 1 日相比较时,对于“年”("yyyy"),即使仅过去一天,DateDiff 也返回 1。
示例:
在表达式中使用 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;

加载中…