Viel hängt davon ab, wie Sie tatsächlich die Spalten start
und end
definiert haben. Ich habe angenommen, dass sie im Folgenden "Zeit" -Spalten sind.
Beachten Sie auch, dass, um das Problem der Verwendung der Serverzeit zu vermeiden, die ich nicht kontrollieren konnte, ich @curtime verwendet habe, aber in Ihrem Code sollten Sie stattdessen CURTIME() verwenden. Sehen Sie sich die Demonstration Demonstration auf SQL Fiddle
CREATE TABLE check_time
(`count` int, `start` time, `end` time)
;
INSERT INTO check_time
(`count`, `start`, `end`)
VALUES
(1, '23:57:45', '00:02:10'),
(2, '00:02:45', '00:07:10')
;
Abfrage 1:
set @curtime:= cast('23:57:45' as time)
select
*
, @curtime
from check_time
where (
(`start` < `end` and @curtime between `start` and `end`)
OR (`start` > `end` and
(@curtime between `start` and cast('24:00:00' as time))
OR (@curtime between cast('00:00:00' as time) and `end`)
)
)
Results:
| count | start | end | @curtime |
|-------|----------|----------|----------|
| 1 | 23:57:45 | 00:02:10 | 23:57:45 |
Abfrage 2:
set @curtime:= cast('00:02:45' as time)
select
*
, @curtime
from check_time
where (
(`start` < `end` and @curtime between `start` and `end`)
OR (`start` > `end` and
(@curtime between `start` and cast('24:00:00' as time))
OR (@curtime between cast('00:00:00' as time) and `end`)
)
)
Results:
| count | start | end | @curtime |
|-------|----------|----------|----------|
| 2 | 00:02:45 | 00:07:10 | 00:02:45 |
Sie müssen erklären, was Sie zu tun versuchen. –
ich will das jetzt() = "23:57:45" zwischen "00:02:10" wählen -> count = 1 – Kokoas
Was ist der tatsächliche Datentyp, den Sie für die Spalten "Start" und "Ende" verwendet haben? Sind diese "Zeit" -Spalten? oder "varchar" Spalten? Liefern Sie DDL der Tabelle –