2015-05-04 70 views
0

我正在使用下面的查詢從開始時間(這是從開始時間2小時)和結束時間提到的數據庫中獲取數據,但此查詢似乎不工作。SQLlite查詢獲取2之間的數據日期時間

列REC_CONT_TIME是日期時間,格式爲YYYY-MM-DD HH:MM

查詢是:

SELECT * FROM REC_CONTACT WHERE日期時間( '現在')

BETWEEN

的strftime('% Y-%m-%d%H:%M:%S',REC_CONT_TIME)

AND

日期時間(的strftime( '%Y-%間 - %d%H:%M:%S',REC_CONT_TIME), '+120分鐘')

開始時間:的strftime(」 %Y-%間 - %d%H:%M:%S 'REC_CONT_TIME)

結束時間:日期時間(的strftime(' %Y-%間 - %d%H:%M:%S ',REC_CONT_TIME),'+ 120分鐘')。 從開始時間開始增加120分鐘。

+0

爲什麼不格式化的Java代碼開始日期時間/結束日期時間,並將其作爲參數傳遞? – Loc

+0

@Loc Ha你可以添加更多的細節..格式如何和什麼? – Psypher

+0

其他問題是:你確定datetime('now')是否返回YYYY-MM-DD HH:MM格式? – Loc

回答

1

如果不包括「本地時間在您的日期時間( 'now')函數您將使用GMT時間。這很可能不是您的日期所在的時區,並且會導致沒有返回值,因爲它不在您的2小時窗口中。

你可以看到區別與此查詢:

select datetime('now'),datetime('now','localtime') 

試試這個:

SELECT * 
FROM REC_CONTACT 
WHERE datetime('now','localtime') 
    BETWEEN 
     strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME) 
    AND 
     datetime(strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME),'+120 minutes') 
+0

謝謝。有效。這是問題所在。 – Psypher

0

如果我明白了,您正試圖從表中獲取日期值在startDate到endDate範圍內的所有行。

假設起始日期是從現在到結束日期爲NOW + 120分鐘,你可以使用這個查詢:

SELECT * 
FROM REC_CONTACT 
WHERE strftime('%s', REC_CONT_TIME) 
BETWEEN strftime('%s', 'now','localtime') 
AND strftime('%s', datetime(strftime('%Y-%m-%d%H:%M:%S','now','localtime'),'+120 minutes')) 

this fiddle

相關問題