MySQL Select: WHERE (время сейчас) = МЕЖДУ табличным значением И табличным значением - PullRequest
7 голосов
/ 21 января 2011

Я ищу способ выбрать строку, в которой текущее время находится между двумя установленными значениями в строке. Я создал таблицу с 3 столбцами, 2 из которых содержат метку времени (ЧЧ: ММ: СС), а другой - строку. Есть ли способ получить строку, соответствующую текущему времени? Чтобы выразить это более абстрактно:

SELECT String FROM TableName WHERE (текущее время) МЕЖДУ (нижнее предельное значение времени) И (верхнее предельное время);

alt text

Таким образом, в основном, исходя из текущего времени, мой скрипт должен вывести правильную строку.

Как мне это сделать? Спасибо!

Ответы [ 4 ]

5 голосов
/ 21 января 2011

В 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

Это будет правильно обрабатывать переходы в полночь.

4 голосов
/ 21 января 2011
SELECT string_col
FROM your_table
WHERE CURTIME() BETWEEN lower_limit_col AND upper_limit_col
2 голосов
/ 21 января 2011

тип двух столбцов должен быть временем (а не отметкой времени). Тогда ответ на ваш вопрос:

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.

2 голосов
/ 21 января 2011

То, как вы это сделали, в значительной степени так:

SELECT String FROM TableName WHERE CURTIME() BETWEEN (Lower Limit Time Value) AND (Upper Limit Time Value);
...