如何在MSSQL中获得CURRENT_DATE?

时间:2012-12-14 19:09:51

标签: java date

我正在使用jpa 3.o和Hibernate。我有一个命名查询:

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

WPSTransaction是我的实体类,createdDate是我班级中的一列。

它在Mysql数据库中运行良好。但是,我正在转向SQL Server 2012,SQL服务器似乎没有编译CURRENT_DATE值。我尝试了GETNOW()NOW()方法以及current_date()方法和CURRENT_TIMESTAMP但没有任何运气。

3 个答案:

答案 0 :(得分:2)

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

您必须使用特定于SQL服务器的GETDATE()函数,因为链接的文档显示。

由于current_date是规范中的关键字,因此您不能仅在MS SQL中创建用户定义的current_date()函数,并期望它的工作方式相同。所以很遗憾,你在这里遇到了特定于数据库的代码。

答案 1 :(得分:1)

在MS SQL中返回当前日期的函数是GETDATE(),因此您的查询应该是

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

答案 2 :(得分:1)

怎么样:

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

不需要特定于数据库的代码。