2017-05-17 3 views
-1

테이블에 데이터 형식이 date 인 열이 있습니다. 이제 기존 날짜에서 30 분으로 열을 업데이트해야합니다.jdbcTemplate에서 SQL의 날짜 열을 동적으로 업데이트하는 방법은 무엇입니까?

예를 들어, 기존 날짜/시간이 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'; 

이었다 그러나 문제는 나중에 내가 속성 파일에서 변경할 것이다 40분에 변경 될 수 있습니다 즉, 동적이 30 분 유지할 필요가있다.

select 문을 사용하지 않고 코드를 변경하지 않고 JDBC 템플릿을 사용하여이를 수행 할 수있는 방법이 있습니다 (동적 분의 경우).

답변

0

update TABLE_NAME set COLUMN_NAME = COLUMN_NAME + 10/1440; 이것은 내가 찾고 있었던 것이다. 열 시간을 기존 열 시간에서 업데이트하려면

0

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); 
} 
+0

이 값은 현재 시스템 시간에서 30 분을 업데이트하는 데 사용할 수 있습니다. 그러나 요구 사항은 열에있는 기존 시간을 선택하지 않고 업데이트하는 것입니다. 그래서 나는 ** "update table_name set column_name = 'SYSDATE - 30/1440';"**을 사용했습니다. 여기서 30/1440 값은 동적으로 쿼리에 전달되어야합니다. 그것은 jdbcTemplate –

+0

에서 일어나지 않습니다. jdbcTemplate을 사용한다면 jdbcTemplate.update ("update table_name set column_name = SYSDATE -"+ variable);를 사용할 수 있습니다. –

+0

시도하고 잘못된 ResultSet 액세스 예외가 있습니다. 하지만 SQL 개발자로부터 업데이트하려고 할 때 업데이트되고 있습니다. org.springframework.jdbc.InvalidResultSetAccessException : PreparedStatementCallback; SQL에 대한 잘못된 ResultSet 액세스 [update table_name set column_name = SYSDATE - 30/1440]; 중첩 예외는 java.sql.SQLException입니다. 잘못된 열 인덱스 \t at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate (SQLErrorCodeSQLExceptionTranslator.java:235). –