java在sql jdbc查询中使用datediff
我试图用以下语句创建一个JDBC查询
String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName +
"where datediff(d,DATECOLUMN2,getdate()) <= 1";
st = conn1.createStatement();
rs = st.executeQuery(query); //receiving error here
我收到以下错误消息
java.sql.SQLException: "d" is not a recognized table hints option. If it is intended as a parameter to a table-valued function or to the CHANGETABLE function, ensure that your database compatibility mode is set to 90.
我确定查询没有识别datediff函数,因为我不确定为什么,因为我以前在同一个应用程序中使用HQL并检索值
为了尝试使用我使用的另一个函数
{fn TIMESTAMPADD( SQL_TSI_DAY, 1, CURRENT_TIMESTAMP)}
但它也失败了,我后来发现它只用于Derby数据库的
有人可以帮助我使用适当的sql函数来比较一个日期和使用JDBC的当前日期吗
# 1 楼答案
“d”后面的逗号应该是点:
# 2 楼答案
在from前面有一个逗号。根据针对SQL server运行的错误消息
# 3 楼答案
发布的代码片段在
tableName
和+
之间没有结尾双引号,但我认为这只是一个输入错误。然而,在实际代码中,双引号究竟在哪里?是直接在tablename
之后,像这样吗或者在
tablename
后面的空格之后,像这样很可能是前者,因为在这种情况下,生成的查询看起来正是导致错误的原因。看看这个:
可以看到
where
与表名合并datediff
成为别名。以下内容被解释为表格提示。(您可以在旧版本的SQL Server/旧版本的兼容级别中不使用指定表提示。)因此,SQL Server在d
上遇到了问题,因为这确实是一个不正确的表提示# 4 楼答案