Гибкий поисковый запрос для извлечения записей однодневной давности

Есть ли способ выполнить гибкий поисковый запрос для получения записей однодневной давности?

Что-то вроде:

select * from {table} where {conditions}

где {conditions} старые записи?


person vigneshwaran sundarrajan    schedule 13.06.2020    source источник


Ответы (3)


Примерно так должно работать:

SELECT * FROM {Product} WHERE {creationTime} < NOW() - INTERVAL 1 DAY

Вместо creationTime вы также можете использовать modifiedTime, в зависимости от того, что вы хотите.

person geffchang    schedule 13.06.2020

Каждый 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 по умолчанию наследует все свои атрибуты.

person Arvind Kumar Avinash    schedule 13.06.2020

Вместо того, чтобы полагаться на функцию БД (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));
person HybrisHelp    schedule 16.06.2020