JPQL SQL Server CURRENT_DATE 语法不正确
Posted
技术标签:
【中文标题】JPQL SQL Server CURRENT_DATE 语法不正确【英文标题】:JPQL SQL Server CURRENT_DATE Incorrect Syntax 【发布时间】:2018-05-13 04:08:19 【问题描述】:使用 Spring 4.3.0 和 com.microsoft.sqlserver:mssql-jdbc:6.2.1.jre8,我正在尝试执行此 SQL Server 查询
SELECT * FROM Message m WHERE m.time >= '2017-11-29' AND m.user_id = 2 ORDER BY m.time DESC
我正在使用 JPQL 表达式格式化 2017-11-29 03:56:34.375
的日期时间列从 SQL Server Express 表中进行选择
SELECT m FROM Message m WHERE m.time >=
日期表达式AND m.user.id = :userId ORDER BY m.time DESC
。
消息对象使用列类型java.util.Date
,并插入到表中。
我找到了许多关于该主题的指南/SO 问题,但似乎没有一个对我有用。在 dateexpression 我尝试过:
CURRENT_DATE
,关键字“CURRENT_DATE”附近的语法不正确。
CURRENT_DATE()
,没有错误但没有选择任何消息。
:today
,将today
作为传入参数java.sql.Date today = new java.sql.Date(new java.util.Date().getTime());
(=> 2017-11-29
) 没有错误但不会选择任何消息。
':today'
,给unknown parameter name : today
d ':today'
,
出现语法错误。
d :today
,
出现语法错误。
GETDATE()
,没有错误但没有选择任何消息。
【问题讨论】:
【参考方案1】:convert(date, getdate())
这很有效,就像往常一样有条不紊地详细说明 SO 的问题时发现。
【讨论】:
除了基于字符的数据类型,存储在数据库中的值没有任何特定的“格式”——这是您用来查看信息的应用程序的产物。了解这一点,您将成为更好的开发人员。您还应该养成先阅读文档的习惯。 tsql 中没有 current_date 函数/全局变量;它确实有 CURRENT_TIMESTAMP。以上是关于JPQL SQL Server CURRENT_DATE 语法不正确的主要内容,如果未能解决你的问题,请参考以下文章