2016-09-05 60 views
0

我正在使用CriteriaBuilder爲我們的應用程序創建搜索。我們的其中一個表有一列用於存儲多種數據類型。如何將字符串轉換爲CriteriaBuilder謂詞的日期

(實施類似於這個問題給出了答案選項2:Sane way to store different data types within same column in postgres?

從本質上講就是我想要做的是簡單的:

Predicate datePredicate = cb.lessThan(field.get(MyTable_.value), new Date());

但是,valueString並且不能與Date正確比較。

我的問題是,有沒有辦法將字符串轉換/比較日期進行比較?

+0

是什麼將被保存到一個字符串字段的日期格式? – ujulu

+0

就像這個'16/08/2016'。 –

+0

據我所知,爲了比較起見,你無法投射字符串字段。您必須將'value'字段更改爲日期類型。 – ujulu

回答

-1

這是不可能通過一投,但是你可以使用SimpleDateFormat的解析字符串的日期:

String date1AsString = "20160101"; 
Date date1AsDate = new SimpleDateFormat("yyyyMMdd").parse(date1AsString); 
+0

像這樣使用格式化程序的問題是'field.get(MyTable_.value)'在技術上不是提供'String',而是'Path '。除非我錯過了一些東西,否則這是行不通的。 –

+0

對不起,我認爲你的問題是如何將字符串轉換爲日期。你正在使用哪個Path類? – huellif

+0

它來自'javax.persistence.criteria'。 –