获取从表中以前的日期和时间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
)
优秀。我不知道SQLite中有LIMIT选项。谢谢。 – CristiC 2011-01-14 09:33:57