我一直在寻找如何做到这一点,但没有想出一个明确的答案(也许我的资源不是那么好)。我需要进行 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")
请您参考如下方法:
SQLite 没有日期类型。您可以将日期存储为字符串,但您需要使用 YYYY-MM-DD 日期顺序,NOT 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 顺序。