Java 如何从jdbcTemplate动态更新SQL中的日期列?

Java 如何从jdbcTemplate动态更新SQL中的日期列?,java,sql,jdbctemplate,Java,Sql,Jdbctemplate,我在表中有一个数据类型为date的列。现在,我需要在现有日期后30分钟内更新该列 例如,如果现有日期/时间为04-APR-17 06.20.11.454000000 PM,则需要在现有时间线04-APR-17 06.50.11.454000000 PM上添加30分钟 这应该在不选择当前日期的情况下完成。我找到的解决办法是 update table_name set column_name = 'SYSDATE - 30/1440'; 但问题是我需要保持这30分钟的动态,这意味着以后我可以更改

我在表中有一个数据类型为
date
的列。现在,我需要在现有日期后30分钟内更新该列

例如,如果现有日期/时间为04-APR-17 06.20.11.454000000 PM,则需要在现有时间线04-APR-17 06.50.11.454000000 PM上添加30分钟

这应该在不选择当前日期的情况下完成。我找到的解决办法是

update table_name 
set column_name = 'SYSDATE - 30/1440';
但问题是我需要保持这30分钟的动态,这意味着以后我可以更改为40分钟,我将从属性文件更改

那么,有没有任何方法可以在不使用select语句的情况下使用JDBC模板实现这一点,也不需要更改代码(对于动态分钟)

//更新:
可以从属性文件中读取会议记录,并且可以从属性文件中读取Column_名称sting。它实际上可以传递给更新查询。这对我来说很有效

你可以使用一个线程,它可以休眠30分钟,并调用你的SQL来更新时间。使用Joda Time可获得更好的Java日期体验

while(true){
org.joda.time.DateTime current_date= new org.joda.time.DateTime();
current_date=current_date.withMinuteOfHour(30).
// Call sql
update table_name set column_name=current_date;
Thread.sleep(Property.getProps(CONFIGURED_TIME)*60*1000);
}

更新表名集合列名=列名+10/1440;这就是我要找的。要从现有列时间更新列时间

可使用此选项从当前系统时间更新30分钟。但要求是更新列中的现有时间,而不选择它。因此,只有我使用了“更新表名集合列名”\u name='SYSDATE-30/1440'。在这里,值30/1440应该动态地传递给查询。这是jdbcTemplate中没有发生的情况,所以如果您使用的是jdbcTemplate,那么可以使用jdbcTemplate.update(“更新表\u name set column\u name=SYSDATE-”+变量);我尝试了,但得到了无效的ResultSet访问异常。但是,当我试图从SQLDeveloper更新相同的内容时,它正在得到更新。org.springframework.jdbc.InvalidResultSetAccessException:PreparedStatementCallback;SQL[update table_name set column_name=SYSDATE-30/1440]的结果集访问无效;嵌套异常为java.sql.SQLException:org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:235)处的列索引无效。您能在此处粘贴准确的代码吗?此外,请删除“for SYSDATE”。应该是SYSDATE-30/1440,不带撇号。public static int updateTime(String delayTime,String id){int updateCount=0;final String updateTime=“SYSDATE+”.concat(delayTime).concat(“/1440”);try{final String sql=messageSource.getMessage(“update.time”,null);jdbcTemplate=(jdbcTemplate)applicationContext.getBean(“jdbcTemplate.”+id);updateCount=jdbcTemplate.update(sql,新对象[]{updateTime});}catch(RuntimeException e){抛出新DatabaseAccessException(“数据库异常发生在updateTime方法中”,“MPY1666005”);}返回updateCount;}