実際に列をどのように定義したかは、start
とend
によって大きく異なります。私は彼らが以下の「時間」の列であると仮定しています。
私は制御できないサーバー時間を使用する問題を避けるため、@curtimeを使用しましたが、のコードではの代わりにCURTIME()を使用する必要があります。
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 |
クエリ2:
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')
;
クエリ1で実演デモを参照してください。 210
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 |
あなたがやろうとしているかを説明する必要があります。 –
私はnow()= "23:57:45"の間に "00:02:10"を選択します。select - > count = 1 – Kokoas
'start'と' end'カラムに使用した実際のデータ型は何ですか?これらの「時間」列ですか?または "varchar"列?テーブルのDDLを提供 –