2016-11-30 93 views
1

我在android sqlite數據庫中比較時間,這裏是我在屏幕截圖中的表格結構。其實我有兩次,像8:00和7:30(基本上這些是員工換班時間)在字符串中,我在我的數據庫中有一列c_TIME,我希望所有記錄都在我的兩個時間B/W (8:00和7:30)從c_TIME開始。Android sqlite時間比較問題

我已經使用這個查詢,但它不能正常工作,請人指導我什麼,我做錯了

SELECT * 
FROM ATTENDANCE 
WHERE strftime('%H','08:00') > strftime('%H', c_TIME) AND 
     time('08:00') < strftime('%H', c_TIME) AND 
     STATE = 'IN' 

enter image description here

+0

上面的查詢重播0記錄 – Achin

回答

0

下面應該工作:

SELECT * 
FROM ATTENDANCE 
WHERE strftime('%H:%M:%S', c_date) > '07:30:00' AND 
     strftime('%H:%M:%S', c_date) < '08:00:00' AND 
     STATE = 'IN' 

評論:

而不是使用c_TIME字段,您應該使用c_date。實際上,我並沒有看到有任何價值觀留在專門存儲時間的專欄中。

strftime根據某種類型的日期時間/時間戳輸入返回一個字符串。來自strftime('%H:%M:%S', c_date)的輸出應該具有HH:MM:SS的形式,並且這個字符串可以按字典順序與08:00:0007:30:00進行比較。比較應該仍然有效,因爲對於長度相同的字符串,它仍應該按數字排序。

+0

這個返回0記錄 – Achin

+0

@Achin你確定,你甚至都應當返還的任何數據?你問題中的同一張表沒有匹配的數據。 –

+0

是的,我有3個值在c_date 2016-11-30 09:18:19,2016-11-25 09:18:19和2016-11-26 06:30:00這是謊言b/w'07:30 :00'和'08:00:00' – Achin

0

嘗試:

select * from ATTENDANCE where c_date between 'yyyy-mm-dd' and 'yyyy-mm-dd'; 

而不是使用c_TIME的,使用c_date場。

您可以相應地更改查詢中的日期格式以在兩個特定時間之間檢索數據。

SQLite支持以下格式:

YYYY-MM-DD 

YYYY-MM-DD HH:MM 

YYYY-MM-DD HH:MM:SS 

YYYY-MM-DD HH:MM:SS.SSS 

YYYY-MM-DDTHH:MM 

YYYY-MM-DDTHH:MM:SS 

YYYY-MM-DDTHH:MM:SS.SSS 

HH:MM 

HH:MM:SS 

HH:MM:SS.SSS 

now 

DDDDDDDDDD 

here