有没有办法进行灵活的搜索查询来获取一天的旧记录?
像这样:
select * from {table} where {conditions}
旧{conditions}
记录在哪里?
每个itemtype
都有一个名为creationtime
的属性,该属性存储在数据库中创建此itemtype
的记录时的时间戳。同样,还有一个名为modifiedtime
的属性,它存储数据库中修改记录时的时间戳。您可以根据需要使用这些属性之一,例如
-
查找早于
1
天的产品的查询:SELECT {pk} FROM {Product} WHERE {creationtime} < DATE_SUB(NOW(), INTERVAL 1 DAY)
-
查找正好
1
天前产品的查询:SELECT {pk} FROM {Product} WHERE {creationtime} = DATE_SUB(NOW(), INTERVAL 1 DAY)
检查hybris ▸ bin ▸ platform ▸ ext ▸ core ▸ resources ▸ core-items.xml
以了解有关itemtype code="Item"
的所有属性的更多信息,该属性是所有itemtype
的超类型,因此默认情况下每个itemtype
都继承其所有属性。
这样的事情应该可以工作:
SELECT * FROM {Product} WHERE {creationTime} < NOW() - INTERVAL 1 DAY
除了creationTime
,你也可以使用modifiedTime
,这取决于你想要什么。
与其依赖数据库函数(DATE_SUB,INTERVAL(,我宁愿在java中计算日期并将Date对象传递给像这样的灵活查询
final FlexibleSearchQuery flexibleSearchQuery = new FlexibleSearchQuery("
SELECT * FROM TABLE AS t WHERE t.creationtime < ?inputDate")
flexibleSearchQuery.addQueryParameter("inputDate",
ZonedDateTime.now(ZoneId.systemDefault()).toInstant().minus(1, ChronoUnit.DAYS));
2 列可能有条件:
- {修改时间}
- {创建时间}
弹性查询:-
SELECT * FROM {product} WHERE {creationtime} < current_date - interval 1 day
SELECT * FROM {product} WHERE {modifiedtime} < current_date - interval 1 day
超过 1 天:
SELECT * FROM {product} WHERE {modifiedtime} < current_date - interval 10 day