【问题标题】:Can't get data between two dates with different year SQLite无法获取具有不同年份 SQLite 的两个日期之间的数据
【发布时间】:2020-05-18 02:21:42
【问题描述】:

我有这个查询来获取两个日期之间的数据。它适用于 2020 年的日期,但当我使用 2019 年的日期时它不起作用。

例子:

SELECT * FROM TASKS_TBL WHERE GROUP_NAME = 'Group Name Sample' 
AND SUB_PROJECT_IDX = 'subproject_test' 
AND START_DATE BETWEEN '01/01/2020'
AND AND DATE('now') 
AND DUE_DATE <='05/18/2020';

上述查询检索给定日期之间的所有数据

不工作示例:

SELECT * FROM TASKS_TBL WHERE GROUP_NAME = 'Group Name Sample' 
AND SUB_PROJECT_IDX = 'subproject_test' 
AND START_DATE BETWEEN '01/01/2019'
AND AND DATE('now') 
AND DUE_DATE <='05/18/2020';

当我使用 2019 年的日期时,它不是检索 2019 年至 2020 年的数据,而是检索 2020 年 1 月 1 日至 2020 年 5 月 18 日的数据

我已经仔细检查了数据库中的数据,我有从 2019 年到 2020 年的数据,并且具有相同的 Group Name 和 Sub Project IDX。

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    将日期格式更改为“YYYY-MM-DD”,这是 SQLite 中唯一有效且可比较的格式:

    UPDATE TASKS_TBL  
    SET START_DATE = SUBSTR(START_DATE, 7) || '-' || SUBSTR(START_DATE, 1, 2) || '-' || SUBSTR(START_DATE, 4, 2),
        DUE_DATE = SUBSTR(DUE_DATE, 7) || '-' || SUBSTR(DUE_DATE, 1, 2) || '-' || SUBSTR(DUE_DATE, 4, 2)
    

    和你的代码:

    BETWEEN '2019-01-01' AND AND DATE('now') 
    AND DUE_DATE <='2020-05-18'
    

    查询将正常工作。

    【讨论】:

      【解决方案2】:

      使用标准日期格式!

      SELECT *
      FROM TASKS_TBL
      WHERE GROUP_NAME = 'Group Name Sample'  AND
            SUB_PROJECT_IDX = 'subproject_test' AND
            START_DATE >= '2019-01-01' AND
            DUE_DATE <= '2020-05-18';
      

      适当调整日期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        • 2021-09-13
        相关资源
        最近更新 更多