我一直在寻找如何做到这一点,但我没有得到一个明确的答案(也许我的资源不是那么好)。我需要创建一个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")
答案 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');