2017-10-01 14 views
-1

mysql datetime選択問題。 mysql time select where比較

私のテーブルCHECK_TIME:私はこのクエリを試みた
count = 1 
start = 23:57:45 
end = 00:02:10 

count = 2 
start = 00:02:45 
end = 00:07:10 

: "午前0時02分10秒" の間に、今私が欲しい

select count 
from check_time 
where start <= DATE_FORMAT(now(), '%H:%i:%s') 
    and end >= DATE_FORMAT(now(), '%H:%i:%s'); 

()= "午後11時57分45秒" を選択 - >カウント= 1

カウント1のみで動作しません。

が、私の悪い英語のための完全に他のカウント数2〜100 ..

は申し訳ありません作業。

+2

あなたがやろうとしているかを説明する必要があります。 –

+0

私はnow()= "23:57:45"の間に "00:02:10"を選択します。select - > count = 1 – Kokoas

+0

'start'と' end'カラムに使用した実際のデータ型は何ですか?これらの「時間」列ですか?または "varchar"列?テーブルのDDLを提供 –

答えて

0

実際に列をどのように定義したかは、startendによって大きく異なります。私は彼らが以下の「時間」の列であると仮定しています。

私は制御できないサーバー時間を使用する問題を避けるため、@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 | 
+0

私は開始/終了を単に終了/開始するのが正確ではないことに気がついたので、この回答を再検討しなければならないでしょう –

+0

私はオリジナルを上記のバージョンに置き換えました(変数@curtimeを使用) –