Hybris Flexiblesearch 今天日期

Hybris Flexiblesearch Today date

我想知道在 hybris flexiblesearch 中比较日期和今天日期的方法是什么。

我在网上搜索过,但找不到方法。通过下面的 flexiblesearch 查询,我想找到今天之前创建的产品,所以是否有某种函数 return 今天的日期,可能类似于此查询:

 SELECT {pk} FROM {Product} 
 WHERE creationTime < NOW

感谢任何帮助

有办法,但可能是特定于数据库的。在 MySQL 这工作正常:

 SELECT {pk} FROM {Order as o} 
 WHERE {o.creationTime} < NOW()

您还可以使用 SYSDATE()

我建议使用 timeService bean OOTB,因为此服务有一些配置用于更正本地服务时区。此外,所有日期时间操作都以标准方式使用此服务。您可以将值设置为灵活查询的参数。

我不确定您是否可以编写 Java 代码来完成您的任务,但是使用 Java 您可以定义常规的灵活搜索参数来传递日期。

例如这里有一个class可以获取当前时间之前创建的订单。

import de.hybris.platform.core.model.order.OrderModel;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import de.hybris.platform.servicelayer.search.FlexibleSearchService;
import de.hybris.platform.servicelayer.search.SearchResult;
import de.hybris.platform.servicelayer.time.TimeService;

import javax.annotation.Resource;
import java.util.List;

public class SomeOrderDao {

    @Resource
    private FlexibleSearchService flexibleSearchService;
    @Resource
    private TimeService timeService;

    public List<OrderModel> findSomeOrders(){
        String query = "SELECT {PK} FROM {Order} WHERE {creationtime} < ?date";
        final FlexibleSearchQuery getOrdersQuery = new FlexibleSearchQuery(query);
        getOrdersQuery.addQueryParameter("date", timeService.getCurrentTime());
        SearchResult<OrderModel> searchResult = flexibleSearchService.search(getOrdersQuery);
        return searchResult.getResult();
    }

}

理想情况下,应该在 java 中获取当前日期,然后将其发送到数据库进行查询。但是,如果您确定数据库中的日期也可以正常工作,那么

SELECT {pk} FROM {ItemType AS o} WHERE {o.date} <= CURDATE()

会起作用。

您可以使用数据库中的本机资源,例如:

对于MySQL:

SELECT {pk} FROM {Product} 
WHERE creationTime < NOW()

对于甲骨文:

SELECT {pk} FROM {Product} 
WHERE creationTime < SYSDATE