获取从表中以前的日期和时间SQLite中

问题描述:

我有以下情况:获取从表中以前的日期和时间SQLite中

在一个表中我有4列:

CommentsTBL: 
ID int 
Data datetime 
Hour Varchar 
Comment Varchar 

小时列是VARCHAR类型的,不问我为什么......

从表中给出一个特定的日期和小时,我需要找到上一个和下一个记录。如果我会找到其中的一个(上一个或下一个),那么使用相同的逻辑就可以很容易地找到另一个。

举个例子:

ID Data  Hour Comment 
1. 2011-01-12 17:00 SomeComments1 
2. 2011-01-14 10:00 SomeComments3 
3. 2011-01-14 11:00 SomeComments4 
4. 2011-01-13 14:00 SomeComments2 

的ID 4以前的日期将是ID为1,下一个会是ID 2.

我想出了一个解决方案,但我想看看你们有没有更好的东西,也许只用一个SELECT。这是对于前一个:

SELECT 
     Data, 
     MAX(Hour) Hour 
FROM 
     CommentsTBL 
WHERE 
     Data in (SELECT 
         MAX(Data) 
       FROM 
         CommentsTBL 
       WHERE 
         Data < MyDate or (Data = MyDate and Hour < MyHour) 
       ) 
GROUP BY 
     Data 

谢谢。

为什么不:

select * 
    from (SELECT data, hour from commentsTbl 
      where data < mydate 
      or (data = mydate and hour < myhour) 
      order by data desc, hour desc 
      limit 1 
     ) 
union all 
select * 
    from (SELECT data, hour from commentsTbl 
      where data > mydate 
      or (data = mydate and hour > myhour) 
      order by data asc, hour asc 
      limit 1 
     ) 
+0

优秀。我不知道SQLite中有LIMIT选项。谢谢。 – CristiC 2011-01-14 09:33:57