【问题标题】:Date comparison not working when current date is 2 months later to date to compare with [duplicate]当前日期比当前日期晚 2 个月时日期比较不起作用 [重复]
【发布时间】:2017-11-22 06:06:41
【问题描述】:

在我的应用中,如果enrollDate 小于或等于当前日期,我必须获取所有行的列表。

我的 SQLite 查询是

select * from master  where enrollDate<='current date'

表格中的注册日期为"07/21/2017",当前日期为"11/22/2017"

一切正常,如果当前日期是直到 '30/09/2017',我会得到行列表,但是当当前日期从 "10/01/2017" 开始时,列表返回 0 行,而它的日期也较晚。

请告诉我为什么会这样以及如何解决它。

【问题讨论】:

  • 它是正确的,并且如果它在 2017 年 9 月 30 日之前也可以工作,但如果它是从 2017 年 10 月 1 日到当前日期为 2017 年 11 月 22 日,则返回 0 行。格式正确

标签: android sqlite date


【解决方案1】:

您实际上是在比较字符串,而不是日期。字符串按字典顺序进行比较。

要在 SQL 中比较日期,请考虑以字典顺序和时间顺序相同的格式存储它们。例如,ISO 8601 UTC 标记 yyyy-MM-dd 或 Java 的 long 纪元毫秒。

【讨论】:

    【解决方案2】:
    SELECT * FROM master WHERE CAST(strftime('%s', enrollDate)  AS  integer) <=CAST(strftime('%s', currentDate)  AS  integer) ;
    

    【讨论】:

    • 感谢您。但问题仍然是,如果我在 2017 年 7 月 24 日代替了enrollDate,那么它会返回行,但我将列名放在此处作为enrollDate,然后它会返回 0 行。请帮忙
    • 你能告诉我你的表的架构吗?
    • 为你的答案添加一些解释
    • 确定什么都没做,只是将字符串转换为秒,然后将其转换为整数
    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 2017-10-12
    • 2019-09-26
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多