我想问一下是否有人能够帮助进行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 ...)
谢谢汤姆。
答案 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;戴夫谁给我指路。