我想知道在hybris flexiblesearch中将日期与今天的日期进行比较的方式。Hybris Flexiblesearch今日约会
我在网上搜索,但我找不到如何。随着flexiblesearch查询下面我想找到已经在今天之前创建的产品,所以是有某种函数的返回今天日期,也许类似这样的查询的内容:
SELECT {pk} FROM {Product}
WHERE creationTime < NOW
任何帮助表示赞赏
我想知道在hybris flexiblesearch中将日期与今天的日期进行比较的方式。Hybris Flexiblesearch今日约会
我在网上搜索,但我找不到如何。随着flexiblesearch查询下面我想找到已经在今天之前创建的产品,所以是有某种函数的返回今天日期,也许类似这样的查询的内容:
SELECT {pk} FROM {Product}
WHERE creationTime < NOW
任何帮助表示赞赏
理想的情况下,当前的日期应该在java中被拾起,然后发送到DB查询。但是,如果您确定数据库中的日期也可以正常工作,那么
SELECT {pk} FROM {ItemType AS o} WHERE {o.date} <= CURDATE()
会起作用。
有办法,但它可能是数据库特定的。在MySQL能正常工作:
SELECT {pk} FROM {Order as o}
WHERE {o.creationTime} < NOW()
您也可以用SYSDATE玩()
我试图在使用oracle的5.5.1.0 Hybris实例中运行这个(来自HAC),它不起作用。最有可能它是数据库特定 –
你可以尝试使用SYSDATE或SYSDATE() –
谢谢,这将工作,但只是在MySQL上,我正在寻找更一般的东西 – Simo
我建议使用timeService豆开箱即用的,因为这种服务为本地服务时区的修正一些配置。所有日期时间操作也都使用此服务。您可以将值设置为参数以弹性查询。
我不确定您是否可以编写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();
}
}
您可以使用本机资源,从你的数据库,例如:
对于MySQL:
SELECT {pk} FROM {Product}
WHERE creationTime < NOW()
对于Oracle:
SELECT {pk} FROM {Product}
WHERE creationTime < SYSDATE
请您的问题*具体*,所以不“类似的东西”,但实际上你真正想要的。而且,到目前为止您尝试了什么,以及您遇到的问题是什么? –