加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在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识别的唯一格式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读