我目前在现有的Android项目中使用SQLite数据库。
在EditText字段中,我可以搜索项目的不同属性,例如颜色,标题或金额。因此,对于每个键入的字母,搜索建议都会更新。在我的项目实体中,我有不同的属性,这里是一个简单的示例:
Item:
* String: color
* String: title
* int: price
* Date: date
* int: id
因此,在搜索字段中,我想注意所有这些属性。这适用于我的String-以及我的int-Attributes,但是我无法设法过滤Date-数据类型。
如果我在TextEditField中键入“ 18”,我想获取2018年的所有商品,1974年3月18日的所有商品,标题为“ sql查询的18 Tipps”的所有商品以及价格从18,00到18,99-当然是每xx,18。
我当前在ItemDao中的查询
@Query("SELECT * FROM items WHERE (LOWER(color) LIKE :searchtext OR LOWER(title) LIKE :searchtext OR price LIKE :searchtext) ORDER BY date DESC")
public abstract List<ItemEntity> searchItems(String searchtext);
如何确定我还可以搜索日期类型?
我尝试加入strftime('%Y-%m-%d',date) LIKE :searchtext
答案 0 :(得分:0)
为了解决我的问题,我在查询中添加了另一行以搜索日期:
OR LOWER(strftime('%d.%m.%Y', datetime(date/1000, 'unixepoch', '+1 day'))) LIKE :searchtext
在深入研究我的数据库后,我看到该日期被保存为包含以毫秒为单位的时间分量的时间戳,因此有必要将初始时间戳除以1000。之后,我在UNIX Epoche中有了一个时间戳。格式,这就是为什么我将其定义为“ unixepoche”。 由于%d配置从零开始,所以最后一个属性将1天添加到加载日期。因此,19年1月1日(不含“ +1天”)将转换为00.01.2019。