Есть ли способ выполнить гибкий поисковый запрос для получения записей однодневной давности?
Что-то вроде:
select * from {table} where {conditions}
где {conditions}
старые записи?
Есть ли способ выполнить гибкий поисковый запрос для получения записей однодневной давности?
Что-то вроде:
select * from {table} where {conditions}
где {conditions}
старые записи?
Примерно так должно работать:
SELECT * FROM {Product} WHERE {creationTime} < NOW() - INTERVAL 1 DAY
Вместо creationTime
вы также можете использовать modifiedTime
, в зависимости от того, что вы хотите.
Каждый 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
по умолчанию наследует все свои атрибуты.
Вместо того, чтобы полагаться на функцию БД (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));