首先,将您的日期格式化为 ISO-8601 标准。将其包装在 Date() 中以确保它被作为 DATE 处理。最后,构建您的范围,使其包含从上午 12:00 开始到第二天上午 12:00 之前的所有内容。
select itemId, dateColumn
from items
where dateColumn >= date('2012-10-23')
AND dateColumn < date('2012-10-23', '+1 day')
SQLite 列没有类型。但是,如果您将列与所示的 DATE 进行比较,则将列数据强制转换为日期就足够了(如果不可强制,则为 null)并且比较将正常进行。
SQLFiddle 上的示例:
create table items (
itemid, datecolumn);
insert into items select
1,'abc' union all select
2,null union all select
3,'10/23/2012 12:23' union all select
4,'10/23/2012' union all select
5,'2012-10-23 12:23' union all select
6,'2012-10-23' union all select
7,'2012-10-24 12:23' union all select
8,'2012-10-24' union all select
9,date('2012-10-24 12:23') union all select
10,date('2012-10-24');
结果:
itemid datecolumn
5 2012-10-23 12:23
6 2012-10-23
请注意,虽然第 3 行和第 4 行看起来是日期,但实际上并非如此,因为它们不符合 ISO-8601 格式,这是唯一可识别的格式SQLite。