2014-06-11 2 views
0

java에서이 sql 코드를 실행하려고하는데 실행 후 테이블에 입력하려고하는 값으로 설정해야합니다.postgresql + Java

st = "INSERT INTO master_st4(unix_timestamp, hrap_xy, rain) values(?, ?, ?)"; 
state = connection.prepareStatement(st); 
state.setInt(1, "select extract (epoch from '2014-03-01 06:00:00 UTC':: timestamp with time zone)"); 
state.setInt(2, in); 
state.setDouble(3, arrBDS);      
state.executeUpdate(); 

나는이 정수보다 다른 뭔가를 반환 알고 있지만, 나는 세 세트 문장의 처음에 전달하는 정수가 필요합니다. unix_timestamp는 정수, hrap_xy는 정수, rain는 실수이므로 double입니다. "메인"java.lang.NumberFormatException의 글

예외 : 입력 문자열 "2014년 3월 1일 6시 '추출물을 선택 (여기서 에포크

오류 메시지이다 : 00 UTC ':: 타임 스탬프가있는 타임 스탬프) " at java.lang.NumberFormatException.forInputString (알 수없는 소스) at java.lang.Integer.parseInt (알 수없는 소스) at java.lang.Integer.parseInt (알 수없는 소스) at JgribDEX.main (JgribDEX.java:110)

답변

1

하위 쿼리를 쿼리에 넣으면 다음과 같이됩니다.

st = "INSERT INTO master_st4(unix_timestamp, hrap_xy, rain) values((select extract (epoch from '2014-03-01 06:00:00 UTC':: timestamp with time zone)), ?, ?)"; 
state = connection.prepareStatement(st); 
state.setInt(1, in); 
state.setDouble(2, arrBDS);      
state.executeUpdate(); 
+0

예. 감사합니다. 나는 이것을 시도했지만, 그렇지 않았다고 생각합니다. – user3374835

+0

@ user3374835 - 기꺼이 도와 드리겠습니다. :) – SergeyB