【问题标题】:Is there a way to compare the size of format date in Android room query?有没有办法比较Android房间查询中格式日期的大小?
【发布时间】:2021-08-09 09:45:34
【问题描述】:

我先给你看代码

@Query("SELECT * FROM plan WHERE (DATETIME(startDate, '%Y-%m-%d') <= :temp OR DATETIME(endDate, '%Y-%m-%d') >= :temp) OR specificDate = :temp")
fun getPlanByDate(temp: String): List<PlannerEntity>

在名为plan 的表中,有startDateendDatespecificDate 列。根据名为temp 的日期,我只想获取属于temp 的数据。 temp 的格式为“yyyy-MM-dd”。 startDateendDate 以“yyyy-MM-dd HH:mm”格式存储,因此您可以看到我将其更改为“yyyy-MM-dd”格式的努力。如何将yyyy-MM-dd HH:mm格式更改为yyyy-MM-dd格式?

【问题讨论】:

  • 如果您的日期是 date 数据类型,您将永远不会遇到这些问题

标签: android sql android-room


【解决方案1】:

如何将格式 yyyy-MM-dd HH:mm 更改为 yyyy-MM-dd 格式?

使用date(the_column)strftime('%Y-%m-%d',the_column)

但是,我认为您的逻辑不正确,因为只有当 endDate 小于 startDate 时才会排除一行。 您可能想要AND 而不是OR :-

.... WHERE (date(startDate) <= :temp AND date(endDate) >=  :temp) OR date(specificDate) = :temp

或者更简单的:-

.... WHERE  :temp BETWEEN date(startDate) AND date(endDate) OR date(specificDate) = :temp

您可能希望参考SQLite Date And Time Functions,其中涵盖了datedatetimetimejuliandaystrftime 函数(即日期操作)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多