这种查询时间日期型的sql怎样写(100分)

L

ljzboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用Access 97.现在有两个表。
Table1 Table2
Field1 Field2 field1 field2
8:11 8:38 a 1:00
9:13 10:15 b 1:15
....... ........
现在我想在Table2中找出这样的纪录: 找出Table2.field2包含Table1.field1和table1.field2的。比如说table1是8:11和8:38,那么我希望table2找出来的结果应该是8:00至到8:45的所有纪录。请问点写?我是用ADOquery做的。
谢谢各位。
 
“8:11和8:38”与“8:00至8:45”有什么关系?
你的时间粒度是什么?15分钟?
讲清楚一点。


 
to lixx,
你说得没错,在table2里面的时间都是相隔15分钟。现在我就是要找出table1里面的时间是分别包含在哪几个十五分钟里面。希望这个解释能比较清楚。还有谢谢你的关注。
 
你先取出来第一个表的时间,然后把时间取出来,分钟取出来然后,重新组成一个时间段,
select a2.*
from a1,a2
where hour(a2.f2)>=(hour(a1.f1) and (hour(a2.f2)<=hour(a1.f2)
and minute(a2.f2)>=round(minure(a1.f1)/15)*15
or(minute(a2.f2)<=round(minure(a1.f1)/15)*15)
 
to ugvanxk,
你的方法很有意思。但是我有点不明。
select a2.*
from a1,a2
where ...
or(minute(a2.f2)<=round(minure(a1.f1)/15)*15)[/b]
最后or的的这句好像有点和前面矛盾。请简单说明。谢谢。
 
你是要根据table1中的一条纪录找table2中的纪录,还是要根据table1中的所有纪录找table2中的纪录?
 
select * from table1, table2 where 分钟数(table1.field1)/15<分钟数(table2.field2)/15 and 分钟数(table2.field2)< 分钟数(table1.field2)/15
 
to MikeZ: 我是要根据talbe1的所有纪录来找table2中的纪录。
to mtj: 你给出的sql中“分钟数”是什么意思?是不是一个函数什么的?还有,我对于呢条语句的逻辑
不是太明白。能解释一下吗?
谢谢!
 
我对ACCESS SQL 不熟悉,我的想法是把时间转换成分钟数,又因为15分钟一个段,
所以整除15
 
to ljzboy:
再你的table1种有个主关键字id,就可以实现你所要求的查询。
先建立query1:
SELECT IIf(dateadd("n", 15, [a].Field2) >= .Field1 And [a].Field2 < dateadd("n", 15, .Field2),.id,0) AS mid, a.*
FROM Table2 AS a, Table1 AS b;

然后建立QUERY2:
SELECT a.Field1, a.Field2 from query1 a inner join Table1 b on a.mid = b.id

try it
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部