设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: funhere
打印 上一主题 下一主题

[其它] ACCESS中如何限定不含日期的时间范围?

[复制链接]
21#
发表于 2007-4-20 22:37:00 | 只看该作者
应该将日期和时间拆开考虑。如果是跨天的。3月1日到3月5日22:00到次日8:00的话,就:
(time>22:00 and time<8:00 ) and (date>#3-1 22:00# and date<#3-6 8:00#)
如果是当天的。3月1日到3月5日1:00到次日18:00的话,就:
(time>1:00 and time<18:00 ) and (date>#3-1 1:00# and date<#3-5 18:00#)

22#
发表于 2007-4-20 22:44:00 | 只看该作者
以下是引用funhere在2007-4-20 14:36:00的发言:


那如果我这里的时间不是取当日22点以后到次日8点以前,而是改成取当日凌晨2点到当时早上8点以前的数据,那这个查询结果就不对了,会把所有时间的数据都取出来。



所以你要对时间的起始进行判断,24小时制,开始<结束即当天

SELECT * FROM TT WHERE RQ BETWEEN #2007-3-1# AND #2007-3-5# AND HOUR(RQ) BETWEEN 2 AND 8

开始>结束,即跨天,用我上述查询。

[此贴子已经被作者于2007-4-20 14:46:36编辑过]

23#
发表于 2007-4-20 22:49:00 | 只看该作者
以下是引用wuaza在2007-4-20 14:37:00的发言:
应该将日期和时间拆开考虑。如果是跨天的。3月1日到3月5日22:00到次日8:00的话,就:
(time>22:00 and time<8:00 ) and (date>#3-1 22:00# and date<#3-6 8:00#)
如果是当天的。3月1日到3月5日1:00到次日18:00的话,就:
(time>1:00 and time<18:00 ) and (date>#3-1 1:00# and date<#3-5 18:00#)

时间判断有问题哦,time>22:00 and time<8:00 ?
24#
发表于 2007-4-20 22:54:00 | 只看该作者
那就改为>=或者<=。写的急忘了。

关键是这样的思路对不对。
25#
发表于 2007-4-20 22:59:00 | 只看该作者
关键是有没有满足time>22:00 and time<8:00的记录 ?
26#
发表于 2007-4-20 23:01:00 | 只看该作者
见笑,确实存在严重的逻辑错误,呵呵。改成用or可不可以?

(time>=22:00 or time<=8:00 ) and (date>=#3-1 22:00# and date<=#3-6 8:00#)


[此贴子已经被作者于2007-4-20 15:05:45编辑过]

27#
 楼主| 发表于 2007-4-20 23:03:00 | 只看该作者
问题解决了,我本来只想用一个查询,现在看来不行,

我就用两个查询:

A查询选取选取大于开始时间“或者OR”小于截止时间的数据

B查询选取选取大于开始时间“并且AND”小于截止时间的数据

如果用户输入的开始时间大于截止时间,就调用“A查询”;

如果用户输入的开始时间小于截止时间,就调用“B查询”;



放在一个查询里在条件里用IIF语句判断数据选取范围是不成功的,系统提示公式过于复杂。

同时,也不是联合查询。
28#
发表于 2007-4-20 23:09:00 | 只看该作者
以下是引用funhere在2007-4-20 15:03:00的发言:


问题解决了,我本来只想用一个查询,现在看来不行,

我就用两个查询:

A查询选取选取大于开始时间“或者OR”小于截止时间的数据

B查询选取选取大于开始时间“并且AND”小于截止时间的数据

如果用户输入的开始时间大于截止时间,就调用“A查询”;

如果用户输入的开始时间小于截止时间,就调用“B查询”;

放在一个查询里在条件里用IIF语句判断数据选取范围是不成功的,系统提示公式过于复杂。

同时,也不是联合查询。

终于找到了正解。恭喜!
29#
发表于 2007-4-20 23:11:00 | 只看该作者
以下是引用funhere在2007-4-20 15:03:00的发言:


问题解决了,我本来只想用一个查询,现在看来不行,

我就用两个查询:

A查询选取选取大于开始时间“或者OR”小于截止时间的数据

B查询选取选取大于开始时间“并且AND”小于截止时间的数据

如果用户输入的开始时间大于截止时间,就调用“A查询”;

如果用户输入的开始时间小于截止时间,就调用“B查询”;

放在一个查询里在条件里用IIF语句判断数据选取范围是不成功的,系统提示公式过于复杂。

同时,也不是联合查询。



解决了吗?如22:00-8:00,执行A,当天8:00之前的记录也在内哦。已经说过,必须加入对日期的判断。

30#
发表于 2007-4-20 23:15:00 | 只看该作者
一个查询太复杂,那就分开。


[此贴子已经被作者于2007-4-20 15:15:06编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-2 02:56 , Processed in 0.104570 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表