【问题标题】:How to query dates using sqlite between如何使用sqlite查询日期
【发布时间】:2019-10-08 15:44:08
【问题描述】:

我正在尝试查询日期之间的范围,但是

我尝试使用日期数据类型,将日期列中的值存储为字符串,还使用日期函数但没有得到想要的结果

CREATE TABLE PvcTable (
    date        TEXT NOT NULL,
    Wardname    TEXT NOT NULL,
    Puname      TEXT NOT NULL,
    PvcReceived TEXT,
    PRIMARY KEY (
        date,
        Wardname,
        Puname
    )
);

预期的结果是当我查询时说

SELECT *  from pvctable 
where date between '2019-1-1' and '2019-12-1' 
order by WARDNAME

我应该得到 2019 年 1 月至 12 月之间的所有记录,但我得到了 this.only 3 条记录返回。

date     Wardname       Puname                    PvcReceived
2019-10  01Alagarno     010KANGARWAPRISCHII         58
2019-11  02Baga         001MILEFOUR                 58
2019-12  02Baga         002DARBASHATA               58

【问题讨论】:

  • 论坛新手,请对帖子感到抱歉...

标签: sqlite android-sqlite


【解决方案1】:

确保表格中的日期具有可比较的正确格式YYYY-MM-DD,这一点很重要。
从您发布的示例数据中,我看到日期中没有 DD 部分,如果您不需要它也没关系,因为 YYYY-MM 也具有可比性。
但是,如果没有 DD 部分,那么在您的查询中,您不应该将日期列与包含此部分的日期进行比较,而是与格式为 YYYY-MM 的日期进行比较。
所以改成这样:

SELECT *  from pvctable 
where date between '2019-01' and '2019-12' 
order by WARDNAME

请参阅demo
结果:

| date    | Wardname   | Puname              | PvcReceived |
| ------- | ---------- | ------------------- | ----------- |
| 2019-01 | 01Alagarno | 001ALAGARNOPRISCH   | 58          |
| 2019-10 | 01Alagarno | 010KANGARWAPRISCHII | 58          |
| 2019-11 | 02Baga     | 001MILEFOUR         | 58          |
| 2019-12 | 02Baga     | 002DARBASHATA       | 58          |

【讨论】:

  • 感谢您的回复,但我已经尝试过,但结果是问题仍然存在。是的,我的日期格式是您适当提到的 yyyy-mm。请协助
  • 发布样本数据。如果日期的格式与您的问题一样,那么您应该得到正确的结果。
  • 确保日期的月份部分是 2 位数而不是 1:2019-05 而不是 2019-5
  • 很好的观察,我会将月份部分设为 2 位而不是 1。稍后会反馈给你。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
相关资源
最近更新 更多