我想知道在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
請您的問題*具體*,所以不「類似的東西」,但實際上你真正想要的。而且,到目前爲止您嘗試了什麼,以及您遇到的問題是什麼? –