SQL QUERY - Сравнение времени (SQLite) - PullRequest
1 голос
/ 22 сентября 2011

Я хотел бы спросить, сможет ли кто-нибудь помочь с SQL-запросом.У меня есть таблица с временем в формате: ЧЧ: ММ: СС.Я хочу написать запрос, который возвращает меня самое близкое время (в будущее) к текущему времени.Например: Таблица содержит 3 строки: 12:00:00, 12:01:00, 12:02:00.Если:

1) Текущее время: 12:00:30.Запрос возвращает: 12:01:00. И т. Д.

НО!

2) Текущее время: 12:02:30.Запрос возвращает: 12: 00: 00.

Я пишу этот запрос, который решает меня 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 ]

2 голосов
/ 23 сентября 2011

Вы можете сделать это:

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

Под редакцией Тома

0 голосов
/ 25 сентября 2011

Я решил это!Это запрос:

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

Спасибо Тиму и Дейву, который показал мне путь.

0 голосов
/ 22 сентября 2011

РЕДАКТИРОВАТЬ: если вам нужно получить СЛЕДУЮЩЕЕ ближайшее время, попробуйте:

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 часа, если необходимо, чтобы получитьположительное число (предстоящее время) в результате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...