java - 如何通过输入id获取DateDiff,同时进行SQL查询?
问题描述
我当前的代码是..
SELECT DATEDIFF(DAY, Return_Date , Submit_Date )FROM Issue WHERE Book_ID = ?
但它显示一个错误,说“调用本机函数'DATEDIFF'时参数计数不正确”
完整代码是
Connection conn;
Connct readerconn = new Connct();
conn =readerconn.getConnection();
try{
String query = "SELECT DATEDIFF(Return_Date , Submit_Date) FROM issue WHERE Book_ID = ?" ;
Double diff=null;
PreparedStatement pstnt=conn.prepareStatement(query);
pstnt.setInt(1, Integer.parseInt( jTextField4.getText()));
try (ResultSet rs = pstnt.executeQuery( query ) ;) {
while ( rs.next ( ) ) {
diff = rs.getDouble( 1 ) ;
if(diff<=7){
Double fine=diff-7*10;
fine = Double.valueOf(jTextField1.getText());
}
else{
showMessageDialog(null,"No Fine");
}
}
} catch ( SQLException ex ) {
Logger.getLogger(ReturnNFines.class.getName()).log(Level.SEVERE, null, ex);
showMessageDialog(null,"Error");
}
} catch (SQLException ex) {
Logger.getLogger(ReturnNFines.class.getName()).log(Level.SEVERE, null, ex);
showMessageDialog(null, "Failed");
}
我试图从 JText 文件中获取他的 id 并查找具有输入 id 的行的 DateDiff,
解决方案
错误消息表明您正在使用 MySQL/MariaDB。在此数据库中,函数datediff()
仅接受两个参数,即两个日期(或类似日期)。
所以:
select datediff(return_date , submit_date) from issue where book_id = ?
请注意,该函数实际上计算两个参数之间存在多少天边界,如果您的参数具有时间分量,则可能(或许多不是)是您所期望的;通常,DATEDIFF('2007-12-31 23:59:59','2007-12-30')
是1
。
如果您想要将 24 小时的间隔视为一天的计算,您可以使用timestampdiff()
和 算术,如下所示:
timestampdiff(second, submit_date, return_date) / 60 / 60 / 24
这为您提供了十进制天数的日期差异。
推荐阅读
- python - 等待:tcp://db:5432 等待依赖项变为可用 30 秒后超时:[tcp://db:5432]
- reactjs - 如何将动态道具传递给接受对象联合作为其类型的 React 组件?
- discord.js - 不和谐 JS | 服务器:检测重新加入的用户
- javascript - 将对象数组中的空值替换为先前填充的值
- illegalargumentexception - java.lang.IllegalArgumentException:无法从 START_OBJECT 令牌中反序列化 `java.lang.String` 的实例
- c# - EF Core 编译模型缓存过期
- sas - 平均平方误差和均方误差有什么区别?他们以同样的瘦而闻名吗?
- c# - 在 Blazor 中验证 URL 参数并以 404 响应
- ssh - ssh 卡在 debug1:已发送 SSH2_MSG_KEX_DH_GEX_REQUEST(2048<3072<8192)
- django - 获取 Django API 调用以使用简单的 json 进行响应