2012-12-14 34 views
0

我在Hibernate中使用jpa 3.o。我有一個命名查詢:如何在MSSQL中獲得CURRENT_DATE?

SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate>= CURRENT_DATE 

WPSTransaction是我的實體類,createdDate是我的類中的一個列。

它在Mysql數據庫中工作正常。但是,我正在轉向SQL Server 2012,SQL Server似乎沒有編譯CURRENT_DATE值。我試過GETNOW()NOW()方法以及current_date()方法和CURRENT_TIMESTAMP沒有任何運氣。

+0

你能澄清一下「沒有任何運氣的意思」嗎? – ireddick

回答

1

在MS SQL返回當前日期的函數是GETDATE(),所以您的查詢應該閱讀

SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate >= GETDATE() 
+0

我已經使用GETDATE()方法..但它不給數量。 – sumit

+0

GETDATE()返回日期*和*時間,因此此查詢用於將來創建的行:http://msdn.microsoft.com/en-us/library/ms188383.aspx – ireddick

1

如何:

Query q = entityManager.createQuery("SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate>= :d"); 
q.setParam("d", new Date()); 

沒有數據庫特定的代碼需要。

2

MS SQL Server fails to conform to the standard這裏 - 它不提供current_date關鍵字。

您必須改爲使用特定於SQL Server的GETDATE()函數作爲文檔鏈接顯示。

因爲current_date是規範中的關鍵字,所以不能在MS SQL中創建用戶定義的current_date()函數,並期望它的工作原理相同。所以不幸的是你在這裏遇到了特定於數據庫的代碼。