灵活搜索查询,用于获取一天的旧记录



有没有办法进行灵活的搜索查询来获取一天的旧记录?

像这样:

select * from {table} where {conditions}

{conditions}记录在哪里?

每个itemtype都有一个名为creationtime的属性,该属性存储在数据库中创建此itemtype的记录时的时间戳。同样,还有一个名为modifiedtime的属性,它存储数据库中修改记录时的时间戳。您可以根据需要使用这些属性之一,例如

  1. 查找早于1天的产品的查询:

    SELECT {pk} FROM {Product} WHERE {creationtime} < DATE_SUB(NOW(), INTERVAL 1 DAY)
    
  2. 查找正好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 列可能有条件:

  1. {修改时间}
  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

相关内容

  • 没有找到相关文章

最新更新