2010-12-15 145 views
2

我一直在尋找如何做到這一點,但沒有提出明確的答案(也許我的資源不是很好)。我需要做一個SQLite查詢來從SQLite數據庫的兩個日期之間檢索數據。SQLite,根據日期進行查詢

我想這一點:

SELECT CONTACTNAME 
FROM SHIPMENT 
WHERE DATECREATED 
BETWEEN date('11-15-2010') 
AND date('12-25-2010'); 

的數據是在我的SQLite數據庫爲:

CONTACTNAME=VARCHAR 
DATECREATED=date (format: "11/22/2010") 

回答

3

嘗試僅僅取消日期():

SELECT CONTACTNAME 
FROM SHIPMENT 
WHERE DATECREATED 
BETWEEN '2010-11-15' 
AND '2010-12-25' 
+0

好的,謝謝,不知道爲什麼我讀的教程裏面有那個 – Rick 2010-12-15 18:11:31

+2

這隻適用於YYYY-MM-DD的日期順序。 – dan04 2010-12-15 22:34:18

+0

@ dan04,你能澄清「那個」嗎?我嘗試了我自己的SQLite數據庫上面使用的代碼,使用MM-DD-YYYY命令,所以我想知道是否引用date()或者SQLite版本中可能與讀取此問題的其他人有關的區別:) – 2010-12-16 20:58:59

13

SQLite沒有日期類型。您可以將日期存儲爲字符串,但您需要使用YYYY-MM-DD日期訂單,不是 MM-DD-YYYY。主要有兩大原因:

(1)正確的順序

隨着YYYY-MM-DD日期,詞典順序相同的時間順序,這使得<>BETWEEN運營商按預期工作。

這是而不是 MM-DD-YYYY日期的情況。對日期BETWEEN '11-15-2010' AND '12-25-2010'的查詢將錯誤地匹配'11-22-1963''12-21-2012'

(2)與SQLite date and time functions兼容。

它們同時接受字符串和數字(​​Julian)日期,但是如果將字符串傳遞給這些函數中的任何一個,則必須具有YYYY-MM-DD順序。

1
SELECT field_1,field_2,date_field 
WHERE julianday(date_field) 
BETWEEN julianday('1998-01-01') and julianday('2008-01-01'); 
+3

如果你解釋了你發佈的代碼,它會更好。 – 2012-10-28 00:43:26