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
我想知道在 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