如何在MSSQL中获得CURRENT_DATE?

问题描述:

我在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

在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

如何:

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

没有数据库特定的代码需要。

MS SQL Server fails to conform to the standard这里 - 它不提供current_date关键字。

您必须改为使用特定于SQL Server的GETDATE()函数作为文档链接显示。

因为current_date是规范中的关键字,所以不能在MS SQL中创建用户定义的current_date()函数,并期望它的工作原理相同。所以不幸的是你在这里遇到了特定于数据库的代码。