Java 在sqljdbc查询中使用datediff

Java 在sqljdbc查询中使用datediff,java,sql,jdbc,datediff,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 我确定查询没有识别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
我确定查询没有识别datediff函数,因为我不确定为什么,因为我以前在同一个应用程序中使用HQL并检索值

为了尝试使用我使用的另一个函数

{fn TIMESTAMPADD( SQL_TSI_DAY, 1, CURRENT_TIMESTAMP)}
但它也失败了,我后来发现它只用于Derby数据库的

有人能帮助我使用适当的sql函数,使用JDBC将日期与当前日期进行比较吗+
String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName "+
               "where datediff(day,DATECOLUMN2,getdate()) <= 1";
其中datediff(day,DATECOLUMN2,getdate())
String query=“从tableName中选择COLUMN1,DATECOLUMN2”+

其中datediff(day,DATECOLUMN2,getdate())在from之前有一个逗号。根据针对SQL server运行此操作的错误消息

String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName " 
              +" where datediff(d,DATECOLUMN2,getdate()) <= 1";
String query=“从tableName中选择COLUMN1、DATECOLUMN2”

+其中datediff(d,DATECOLUMN2,getdate())前面有一个逗号。根据错误消息,您正在对SQL server运行此操作

String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName " 
              +" where datediff(d,DATECOLUMN2,getdate()) <= 1";
String query=“从tableName中选择COLUMN1、DATECOLUMN2”
+其中datediff(d,DATECOLUMN2,getdate())在“d”后面的逗号应该是一个点:

where datediff(d.DATECOLUMN2,getdate())
--------------- ^ dot here
“d”后面的逗号应为点:

where datediff(d.DATECOLUMN2,getdate())
--------------- ^ dot here

发布的代码片段在
tableName
+
之间没有结束双引号,但我认为这只是一个输入错误。然而,在实际代码中,双引号究竟在哪里?它是直接在
tablename
之后,像这样吗

String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName" +
String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName "+
或者在
tablename
后面的空格后面,如下所示

String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName" +
String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName "+
很可能是前者,因为在这种情况下,生成的查询看起来与导致错误的方式完全相同。看看这个:

SELECT COLUMN1,DATECOLUMN2 FROM tableNamewhere datediff(d,DATECOLUMN2,getdate()) <= 1

从tableName中选择COLUMN1,DATECOLUMN2,其中datediff(d,DATECOLUMN2,getdate())发布的代码段在
tableName
+
之间没有双引号,但我认为这只是一个输入错误。然而,在实际代码中,双引号究竟在哪里?它是直接在
tablename
之后,像这样吗

String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName" +
String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName "+
或者在
tablename
后面的空格后面,如下所示

String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName" +
String query = "SELECT COLUMN1,DATECOLUMN2 FROM tableName "+
很可能是前者,因为在这种情况下,生成的查询看起来与导致错误的方式完全相同。看看这个:

SELECT COLUMN1,DATECOLUMN2 FROM tableNamewhere datediff(d,DATECOLUMN2,getdate()) <= 1

从TableName中选择COLUMN1,DATECOLUMN2,其中datediff(d,DATECOLUMN2,getdate())感谢您的响应。我已经试过了,在所有的比赛中也试过了“dd”,但没有work@MarquisBlount:您是否仅尝试将
d
替换为
dd
day
?我想真正的问题是
tablename
之后双引号的实际位置。我怀疑您没有在字符串末尾留下空格,因此表名与
where
合并。详情请看我的答案。谢谢回复。我已经试过了,在所有的比赛中也试过了“dd”,但没有work@MarquisBlount:您是否仅尝试将
d
替换为
dd
day
?我想真正的问题是
tablename
之后双引号的实际位置。我怀疑您没有在字符串末尾留下空格,因此表名与
where
合并。有关详细信息,请参见我的回答。很抱歉,这是我编辑查询并删除不相关的其他字段的好主意,很抱歉,这是我编辑查询并删除不相关的其他字段的好主意,这有助于了解您的数据库类型和版本:)FWIW,您发布的查询在sql server中运行良好(正确关闭引号后)。这表明问题出在我们看不到的查询的其他部分。或者您正在使用不同的数据库类型;-)了解您的数据库类型和版本会有所帮助:)FWIW,您发布的查询在sql server中运行良好(正确关闭引号后)。这表明问题出在我们看不到的查询的其他部分。或者您正在使用不同的数据库类型;-)