我有一张类似的表:
@property (nonatomic, strong) NSLayoutConstraint *heightConstraint;
如何在开始和结束时间的条件下实现查询 06-24-2015 08:00和06-24-2015 09:00我得到前两个记录,如果开始和结束时间是06-24-2015 08:00和06-24-2015 09:15我得到前三个记录。同样在条件下如果开始和结束时间是06-24-2015 08:15和06-24-2015 09:15我需要获得前三个记录
感谢您的帮助。
答案 0 :(得分:0)
Declare @starttime datetime = '6-24-15 08:00:00'
Declare @endtime datetime = '6-24-15 09:00:00'
Select * from MyTable
where StartTime <= @endtime and endtime >= @starttime
根据需要更改前两行以调整搜索窗口。另外,我认为您的专栏真的是starttime
,而不是sarttime
- 如果我猜错了,可能需要调整代码。
根据项目的要求,您可能需要将>=
调整为>
等。
答案 1 :(得分:0)
我没有看到您使用的是哪个平台,因此请注意以下内容适用于MSSQL Server。
如果您的“StartTime”和“EndTime”列在SQL中被定义为日期时间类型,那么服务器将把您的查询转换为适当的类型。在这里,您可以在http://www.xxx.xxx/~account
子句中使用普通的&gt;,&lt;,=运算符(如果您愿意,可以使用WHERE
)来完成您要执行的操作。
就你问题的第二部分而言,如果你基本上希望在你的结束时间中包含(可选的)15分钟“滞后”并且在你的开始时间内“推”15分钟,你可以使用BETWEEN
做类似的事情:
DATEADD
这当然只有在您的数据仅以整数或半小时为增量表示时才有意义。
下面列出的SELECT * FROM [myTable]
WHERE
(StartTime >= @startTime AND EndTime <= @endTime) OR
(StartTime >= @startTime AND DATEADD(minute, -15, EndTime) <= @endTime) OR
(DATEADD(minute, 15, StartTime) >= @startTime AND EndTime <= @endTime) OR
(DATEADD(minute, 15, StartTime) >= @startTime AND DATEADD(minute, -15, EndTime) <= @endTime)
文档:
https://msdn.microsoft.com/en-us/library/ms186819.aspx
希望这有帮助!