【发布时间】:2013-06-04 14:48:17
【问题描述】:
我已经澄清了我想查询的方式。
我想获取特定时间范围内的记录。
我在表 A 中有一条记录,开始时间为 1900-01-01 21:00:00.0,结束时间为 1900-01- 01 22:00:00.0
我还有另一个表 B,它的 startTime 为 1900-01-01 21:47:43.0 和 endTime 为 1900-01-01 21 :47:48.0
现在我的任务是找到表 A 中的所有条目,其中包含表 B 的 startTime 和 endTime。
最初我使用如下查询:
select *
from A
where startTime between '1900-01-01 21:47:43.0' and '1900-01-01 21:47:48.0'
我没有得到任何结果。
然后我尝试了以下查询
select *
from A
where startTime < '1900-01-01 21:47:43.0' and startTime > '1900-01-01 21:47:48.0'
我得到了一排。
在表 A 中,我的范围如下:
1900-01-01 21:00:00.0 - 1900-01-01 22:00:00.0
1900-01-01 22:00:00.0 - 1900-01-01 23:00:00.0
1900-01-01 23:00:00.0 - 1900-01-01 23:30:00.0
.
.
.
等等。
在表 B 中,我有行 start 和 endTimes 之类的
1900-01-01 21:27:30.0 - 1900-01-01 21:27:55.0
1900-01-01 22:11:22.0 - 1900-01-01 22:11:44.0
1900-01-01 23:22:11.0 - 1900-01-01 23:22:55.0
.
.
.
and so on.
我必须从表 B 中获取 startTime 和 endTime 并匹配表 A 中的插槽并得到结果。
我的第一种查询方式是否正确,或者第二种方式是否正确,或者还有其他方法可以做到这一点。
编辑
由于我们试图在存在范围的表 A 中查找记录,因此我尝试使用 B 的 start 和 endTimes,如下所示:
select *
from A
and '1900-01-01 21:47:43.0' between startTime and endTime
and '1900-01-01 21:47:48.0' between startTime and endTime
【问题讨论】:
-
这取决于您希望结果是什么,您是否希望两个表之间的开始时间和结束时间匹配?或者您想在 B 中查找表 A 范围内的记录?
-
@Goat_CO:我想要表 A 上的所有记录,它封装了表 B 中记录的 startTime 和 endTime。在这种情况下,我该怎么做。
-
这很令人困惑,因为在您问题的顶部,您显示的 A 的值与底部的 A 值不同,而顶部的 B 值与 B 的值不同底部。
-
@Goat_co:很抱歉我把值弄混了。我已经更正了这些值。那么如何找到表 A 上的所有记录,它封装了表 B 中记录的 startTime 和 endTime。在这种情况下,我该怎么做。