我先展示一下代码
@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
的表中,有startDate
、endDate
和specificDate
列。基于名为temp
的日期,我只想获得属于temp
的数据。temp
的格式为"yyyy-MM-dd"。startDate
和endDate
存储在"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
,julianday
和strftime
函数(即日期操作)。