如何在sqlite中按日期选择行
发布时间:2020-12-12 18:58:39 所属栏目:百科 来源:网络整理
导读:我必须通过传递日期来从数据库中选择所有行.例如,获取日期为10/23/2012的所有行 在sqlite db中,我将其存储在DATE列中: 01/01/1900 11:00:00 AM 我试图通过使用date()获得但是我没有得到任何日期: select itemId,date(dateColumn) from items 所以我只需要
我必须通过传递日期来从数据库中选择所有行.例如,获取日期为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识别的唯一格式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |