是否有一种方法来比较在Android房间查询格式日期的大小?



我先展示一下代码

@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格式?

如何将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,datetime,time,juliandaystrftime函数(即日期操作)。