SQLite,根据日期进行查询

时间:2010-12-15 18:03:19

标签: sql sqlite

我一直在寻找如何做到这一点,但我没有得到一个明确的答案(也许我的资源不是那么好)。我需要创建一个SQLite查询来从SQLite DB中检索两个日期之间的数据。

我正在尝试这个:

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

数据在我的SQLite DB中:

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

3 个答案:

答案 0 :(得分: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 :(得分:3)

尝试删除date():

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

答案 2 :(得分:1)

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