在参数化语句中使用SQL函数

时间:2010-08-27 16:45:41

标签: java jdbc prepared-statement

考虑此查询:

insert (a, b, update_time) values (1, 1, now() - interval 10 second)

现在,我需要将其转换为参数化语句:

insert (a, b, update_time) values (?, ?, ?) 

问题是你不能在参数中使用SQL函数。我该如何编写这种代码?

2 个答案:

答案 0 :(得分:2)

Date now = new Date();
PreparedStatement ps = connection.prepareStatement("INSERT INTO your_table(a, b, update_time) VALUES(?, ?, ?)");
ps.setObject(1, a);
ps.setObject(2, b);
ps.setDate(3, now);
ps.executeUpdate();

答案 1 :(得分:1)

无需参数化日期代码:

insert (a, b, update_time) values (?, ?, now() - interval 10 second)

现在它只需要两个参数,日期将在服务器上处理。我在JDBC和MySQL之间有关于夏令时的时区问题。小心!