Я ищу способ выбрать строку, в которой текущее время находится между двумя установленными значениями в строке. Я создал таблицу с 3 столбцами, 2 из которых содержат метку времени (ЧЧ: ММ: СС), а другой — строку. Есть ли способ получить строку, соответствующую текущему времени?
Чтобы выразить это более абстрактно:
SELECT String FROM TableName WHERE (текущее время) BETWEEN (нижнее предельное значение времени) И (верхнее предельное значение времени);
Таким образом, в основном, исходя из текущего времени, мой скрипт должен вывести правильную строку.
Как мне это сделать?
Спасибо!
В MySQL
метка времени — довольно запутанное слово.
Если они lowerlimit
а также upperlimit
являются TIME
столбцы из 00:00:00
в 23:59:59
:
SELECT String
FROM TableName
WHERE CURTIME() BETWEEN lowerlimit AND upperlimit
OR CURTIME() BETWEEN SUBTIME(upperlimit, '24:00:00') AND lowerlimit
OR SUBTIME(CURTIME(), '24:00:00') BETWEEN SUBTIME(upperlimit, '24:00:00') AND lowerlimit
Это будет правильно обрабатывать переходы в полночь.
SELECT string_col
FROM your_table
WHERE CURTIME() BETWEEN lower_limit_col AND upper_limit_col
То, как вы это сделали, во многом так:
SELECT String FROM TableName WHERE CURTIME() BETWEEN (Lower Limit Time Value) AND (Upper Limit Time Value);
тип двух столбцов должен быть временем (а не отметкой времени). Тогда ответ на ваш вопрос:
select string from tablename where curtime() between lowerlimit and upperlimit
Просто убедитесь, что ночь не идет с 22:00:00 до 06:00:00, иначе это не сработает. Но вы можете ввести два интервала для мощи: один с 22:00:00 до 24:00:00, а другой с 00:00:00 до 06:00:00.