SQL QUERY - 时间比较(SQLite)

时间:2011-09-22 17:29:39

标签: sql sqlite time

我想问一下是否有人能够帮助进行SQL查询。我有格式时间表:HH:MM:SS。我想写一个查询,它返回到当前时间最近的时间(到将来)。例如:表包含3行:12:00:00,12:01:00,12:02:00。如果:

1)当前时间是:12:30:30。查询返回:12:01:00等。

BUT!

2)当前时间是:12:02:30。查询返回:12:00:00。

我写这个查询,whitch解决了我1),但不是2)。

select time(myColumn) 
from myTable 
where time(myColumn) >= time(current_timestamp, 'localtime') 
order by myColumn 
limit 1

如果有人可以提供帮助,我将不胜感激。

PS:数据库在SQLite中(必须是),不可能用日期计算,例如:2011-01-01 12:00:00 ...)

谢谢汤姆。

3 个答案:

答案 0 :(得分:2)

你可以这样做:

             select min(  time(yourtimecolumn) ) from foo
             where time(current_timestamp, 'localtime') < time(yourtimecolumn) 

汤姆编辑

答案 1 :(得分:0)

编辑:如果您需要获得NEXT最近的时间,请尝试:

SELECT time(myColumn)
FROM myTable
ORDER BY CASE WHEN myColumn - time(current_timestamp, 'localtime') > 0,
         THEN myColumn - time(current_timestamp, 'localtime')
         ELSE myColumn - time(current_timestamp, '24 hours', 'localtime')
         END CASE
LIMIT 1

按照到数据库中下一个时间戳的时间量排序,尝试在必要时添加24小时以获得正数(即将到来的时间)。

答案 2 :(得分:0)

我解决了!这是查询:

select 
case when 
(select min(time(myColumn)) from myTable where time(current_timestamp, 'localtime') < time(myColumn)) is null 
then 
(select min(time(myColumn)) from myTable where time(current_timestamp, 'localtime') > time(myColumn)) 
else 
(select min(time(myColumn)) from myTable where time(current_timestamp, 'localtime') < time(myColumn)) 
end
蒂姆蒂姆&amp;戴夫谁给我指路。