【发布时间】:2020-06-05 22:19:21
【问题描述】:
在我的应用程序中,我以日期格式 yyyy/MM/dd HH:mm:ss 捕获日期/时间。然后我使用以下类型转换将日期作为 long 存储在数据库中。
@TypeConverter
public static Long toDate(Date date){
return date == null ? null : date.getTime();
}
@TypeConverter
public static Date toLong(Long timestamp){
return timestamp == null ? null : new Date(timestamp);
}
日期在数据库中存储为:1591353144826
如果我运行如下查询: 选择 * 从示例表 它会毫无问题地返回所有行。
如果我运行 SELECT * FROM exampleTable WHERE exerciseDate >= datetime('now', '-30 day') 不会返回任何行。我的目标是能够按周、月、季度、年等过滤行。但是 WHERE 子句返回 0 行。我必须删除 WHERE 子句才能返回行。
有人可以帮我解决这个问题的根本原因吗?我认为只要使用类型转换器存储日期是能够使用日期时间搜索功能的正确方法。
【问题讨论】:
-
您需要先将您的锻炼日期转换为日期时间。试试看:
SELECT * FROM exampleTable WHERE datetime(workoutDate, 'unixepoch') >= datetime('now', '-30 day') -
很遗憾这不起作用
标签: android sqlite android-sqlite android-room