2013-01-15 97 views
0

我正在使用JPA 1與hibernate作爲提供程序。我想比較實體的日期和當前日期(不管時間),我將該字段保存爲時間戳(因爲我需要它)。 當我使用Oracle方言通過下面的代碼我得到正確的結果:使用jpa將數據庫中的日期與當前日期進行比較

select t from Task t where to_date(t.createdOn) = to_date(CURRENT_DATE) 

,但是當我切換到SQL Server(2008年),這是行不通的。我需要一個通用的方法,這樣我可以使查詢數據庫獨立。

回答

0

這是您的Oracle代碼

SELECT * FROM Task t 
WHERE CAST(t.createdOn as date) = cast(getdate() as date) 

精確模擬,但我建議使用這樣的:

SELECT * FROM Task t 
WHERE t.createdOn >= cast(getdate() as date) 
     AND t.createdOn < DATEADD(d, 1, cast(getdate() as date)) 

編輯

詳情如何Hibernate配置與SQL SERVER 2008看到工作this

+0

但它將日期轉換爲datetime數據類型並因此比較完整日期。我們只需要比較日期(我嘗試過兩種方法,兩者都比較完整的日期時間)。 – Hardik

+0

您是否探索過與'DATE'數據類型相關的'sql server'文檔? http://msdn.microsoft.com/en-us/library/bb630352.aspx –

+0

我覺得有一點小姐理解。 Hibernate正在生成'datetime'。如果我直接使用sql服務器,它正在工作。所以如果你能幫助請再次。 – Hardik

相關問題