如何使用sql在两行之间搜索datetime?

如何使用sql在两行之间搜索datetime?,sql,Sql,我正在尝试按日期和时间范围搜索数据库中的行。每一行都有一个TimeWrite,但是如果我选择的范围包含在两行之间的范围中,则结果中会包含该范围。不在第一行之前拉动前一行。有人有什么建议吗 表中的值: tempTable ------------------------------- rowId timewritten 1 2019-02-05 22:14:30.200 2 2019-02-05 22:16:39.513 3 2019-02-05 22:37

我正在尝试按日期和时间范围搜索数据库中的行。每一行都有一个TimeWrite,但是如果我选择的范围包含在两行之间的范围中,则结果中会包含该范围。不在第一行之前拉动前一行。有人有什么建议吗

表中的值:

tempTable ------------------------------- rowId timewritten 1 2019-02-05 22:14:30.200 2 2019-02-05 22:16:39.513 3 2019-02-05 22:37:27.437 4 2019-02-05 22:58:21.343 5 2019-02-05 23:00:50.400 -------------------------------
若要在前后各获取一行(如果有),可以使用窗口函数:

select t.*
from (select t.*,
             lag(timewritten, 1, timewritten) over (order by timewritten) as prev_TimeWritten,
             lead(timewritten, 1, timewritten) over (order by timewritten) as next_TimeWritten
      from temptable t
     ) t
where next_TimeWritten >= '2019-02-05 22:20:00' and
      prev_timewritten <= '2019-02-05 22:57:00';

22:16和22:58超出范围。你的问题是什么?你在用什么数据库管理系统? tempTable ------------------------------- rowId timewritten 1 2019-02-05 22:16:39.513 2 2019-02-05 22:37:27.437 3 2019-02-05 22:58:21.343 -------------------------------
select t.*
from (select t.*,
             lag(timewritten, 1, timewritten) over (order by timewritten) as prev_TimeWritten,
             lead(timewritten, 1, timewritten) over (order by timewritten) as next_TimeWritten
      from temptable t
     ) t
where next_TimeWritten >= '2019-02-05 22:20:00' and
      prev_timewritten <= '2019-02-05 22:57:00';