如何在sqlite中按日期选择行

我必须通过传递日期来从数据库中选择所有行.例如,获取日期为10/23/2012的所有行

在sqlite db中,我将其存储在DATE列中:

01/01/1900 11:00:00 AM

我试图通过使用date()获得但是我没有得到任何日期:

select itemId,date(dateColumn) from items

所以我只需要比较日期,但无法在sqlite中找到如何做到这一点.

解决方法

首先,将日期格式化为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识别的唯一格式.

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能