首页 > 解决方案 > JDBC 模板中的 DATEADD

问题描述

我正在尝试使用jdbcspring boot进行查询选择,

我想要选择我的创建日期值小于现在负 30 的信息。

我试过这样:

SELECT *  
FROM informations 
WHERE lastTreatment < DATEADD(MINUTE, -30, GETDATE())

我有这样的错误:

引起:org.springframework.jdbc.BadSqlGrammarException: StatementCallback; 糟糕的 SQL 语法

有人有想法吗?谢谢

标签: sqloraclespring-bootjdbc

解决方案


您声称是 Oracle,但看起来您编写的是 MS SQL Server 或 MySQL。Oracle 中没有 DATEADD 这样的函数,也没有 GETDATE 函数。要在日期中添加 x 天,只需执行date+x即可。在这种情况下,您只需要一天的一小部分,因此只需添加一个 x 即可产生需要的部分。对于 30 分钟,即30/(60*24)或(30 分钟/(每小时 60 分钟 * 每天 24 小时)。至于 GETDATE 只需使用 SYSDATE。所以您的查询变为:

SELECT *  
FROM informations 
WHERE lastTreatment < sysdate-(30/(60*24));

推荐阅读