2014-05-09 122 views
0

之間我有這樣一行:
MySQL的選擇,其中行的內容爲兩個小時

它怎麼可能只得到07:0000:00的結果嗎? 07:0023:59,在我的情況下00:00

$query = "SELECT * FROM `".$today."` WHERE hour BETWEEN '07:00' AND '00:00'"; 

...什麼也沒有返回。

+1

是什麼時間的數據類型? –

+0

VARCHAR。我應該使用別的東西嗎? – user3474451

+1

將其更改爲以'time'數據類型,並嘗試 –

回答

-1

我認爲它應該更像

SELECT * FROM `".$today."` WHERE hour >= "7:00" AND hour <= "24:00"; 

這爲我工作反正。存儲

+0

這(與'07:00'代替'7:00'和'「'轉義)返回_06:43_,_07:00_,_00:00_和_00:40_ – user3474451

0
select * 
from tab 
where replace(hour,':','') 
between '0700' AND '2359' 
OR replace(hour,':','') ='0000'; 
+0

這將返回_06:43_,_07:00_, _00:00_和_00:40_。 – user3474451

+0

好的我修改了它,現在就試試。 – chetan

+0

嚴格地說,替換是不必要的(':'是一個不區分的字符),但是你至少要調用OP的特例。 –

1

日期爲varchar會使查詢比較它非常困難,應存放在適當datattype。

你的情況的解決方法,即使用VARCHAR存儲的時間,你可以使用的東西作爲

select * from 
table_name 
where 
TIME_FORMAT ( 
    str_to_date ( 
     replace (hour,':',''),'%H%i' 
    ),'%H:%i' 
) 
between '07:00' AND '23:59'; 

DEMO

+0

午夜'00:00'小時,在'WHERE'子句中怎麼樣? –

+0

好點@Ravinder讓我重建代碼。 –

+0

'07:00-00:00'返回0結果,'00:00-07:00'返回_06:43_。我可以改變我的數據類型爲'時間',但我的時間是'G:i'格式。我該怎麼辦? – user3474451

0

一般似乎有點模糊的問題/數據結構的設置,你就需要如果您參考07:00 - > 00:00或00:00 - > 07:00,請小心。

與TIMESTAMP工作可能會節省大量的頭痛,例如:

CREATE TABLE test(time1 TIMESTAMP, data VARCHAR(20)); 
INSERT INTO test(time1, data) VALUES('2014-05-09 07:00', 'kala1'); 
INSERT INTO test(time1, data) VALUES('2014-05-09 06:43', 'kala2'); 
INSERT INTO test(time1, data) VALUES('2014-05-09 23:59', 'kala3'); 
INSERT INTO test(time1, data) VALUES('2014-05-10 00:00', 'kala4'); 
INSERT INTO test(time1, data) VALUES('2014-05-10 00:40', 'kala5'); 

然後,你可以做這樣的事情

SELECT * FROM test WHERE time1 >= '2014-05-09 07:00' AND time1 <= '2014-05-10 00:00' 
+0

根據情況,我們不知道有可用的日期值。不過,它可能會讓他停止使用'00:00'作爲結束時間。 –