Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否可以选择限制1来提取日期范围加上前后的第一个条目?_Sql_Sqlite_Union_Limit - Fatal编程技术网

Sql 是否可以选择限制1来提取日期范围加上前后的第一个条目?

Sql 是否可以选择限制1来提取日期范围加上前后的第一个条目?,sql,sqlite,union,limit,Sql,Sqlite,Union,Limit,基本上,我想在一个范围内选择+1个条目之后和1个条目之前 我试着这样做: SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime BETWEEN '2011-01-21 00:00:00' AND datetime('2011-01-21 00:00:00', '+24 hours') UNION SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime

基本上,我想在一个范围内选择+1个条目之后和1个条目之前

我试着这样做:

SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime BETWEEN '2011-01-21 00:00:00' AND datetime('2011-01-21 00:00:00', '+24 hours') 
UNION 
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime < '2011-01-21 00:00:00' LIMIT 1
UNION
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime > datetime('2011-01-21 00:00:00', '+24 hours') LIMIT 1
ORDER BY DateTime ASC

但事实证明,在复合SELECT语句的末尾只能有一个限制。。那么,我如何实现这种效果呢?使用sqlite btw,您需要子查询限制以限制其范围

SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime BETWEEN '2011-01-21 00:00:00' AND datetime('2011-01-21 00:00:00', '+24 hours') 
UNION ALL
SELECT * FROM (
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime < '2011-01-21 00:00:00'
ORDER BY DateTime DESC LIMIT 1
) X
UNION ALL
SELECT * FROM (
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime > datetime('2011-01-21 00:00:00', '+24 hours')
ORDER BY DateTime ASC LIMIT 1
) Y
ORDER BY DateTime ASC

可能有其他选择,但正确使用限制1确实是最快的选择。这比我预期的需要的时间要长!。。但长度并不是真正的问题。谢谢。如果目标日期是2011-01-21,那么之前的日期是否总是以完美的顺序(如2011-01-20、2011-01-22)在前一天和后一天,或者是在日期顺序中存在差距的情况下,使用我们的示例日期,之前的日期可能是2011-01-05或其他什么?可能会有跳过的日期,因为我跟踪的是事件,而不是特定的日期,通常每天会有3+个事件。只想能够比较一天中的第一个事件和最近的前一个事件,并与下一个事件相同。