我想知道在hybris flexiblesearch中将日期与今天日期进行比较的方法是什么。
我在网上搜索过,但我找不到怎么回事。通过下面的flexiblesearch查询,我想找到今天之前创建的产品,那么是否有某种函数可以返回今天的日期,可能与此查询类似:
SELECT {pk} FROM {Product}
WHERE creationTime < NOW
感谢任何帮助
答案 0 :(得分:2)
有方法但可能是特定于DB的。在MySQL上,这很好用:
SELECT {pk} FROM {Order as o}
WHERE {o.creationTime} < NOW()
您也可以使用SYSDATE()
答案 1 :(得分:2)
理想情况下,应在java中拾取当前日期,然后将其发送到数据库进行查询。但是,如果您确定数据库中的日期也可以正常工作,那么
SELECT {pk} FROM {ItemType AS o} WHERE {o.date} <= CURDATE()
会起作用。
答案 2 :(得分:0)
我建议使用 timeService bean OOTB,因为这个服务有些配置用于修正本地服务时区。此外,所有日期时间操作都在标准中使用此服务。您可以将value设置为flex查询的参数。
答案 3 :(得分:0)
我不确定您是否可以编写Java代码来完成任务,但是使用Java可以定义常规的灵活搜索参数来传递日期。
例如,这里有一个类可以获取在当前时间之前创建的订单。
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();
}
}
答案 4 :(得分:0)
您可以使用数据库中的本机资源,例如:
对于MySQL:
SELECT {pk} FROM {Product}
WHERE creationTime < NOW()
对于ORACLE:
SELECT {pk} FROM {Product}
WHERE creationTime < SYSDATE