저는 Java JDBC를 처음 접했습니다. 두 Oracle DATE 값 사이에서 SELECT를 수행하기 위해 JDBC preparedstatement를 작성하려고합니다. 쿼리를 직접 수행 할 수 있으므로이 두 시간 사이에 데이터가 있음을 알고 있습니다.JDBC setDate가 preparedstatement와 작동하지 않습니다.
그러나 JDBC 코드 내에서 prepared statement를 실행할 때 0 행을 반환합니다.
제 입력 시작 및 시간은 밀리 초 단위의 긴 유닉스 시간 값입니다.
나는 최소한에 코드를 깎다하는 것을 시도했다:
public static List<Oam1731Sam5Data> getData(Long startTime, Long endTime) {
try {
String query = "SELECT timecaptured from oam1731data5 " +
"WHERE timecaptured between ? and ?";
pstmt = conn.prepareStatement(query); // create a statement
Date javaStartDate = new Date(startTime);
Date javaEndDate = new Date(endTime);
pstmt.setDate(1, javaStartDate);
pstmt.setDate(2, javaEndDate);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String serviceId = rs.getString("SERVICEID");
String recordSource = rs.getString("RECORDSOURCE");
Date timeCaptured = rs.getDate("TIMECAPTURED");
Long oneWayMaxDelay = rs.getLong("ONEWAYMAXDELAY");
Long twoWayMaxDelay = rs.getLong("TWOWAYMAXDELAY");
Long twoWayMaxDelayVar = rs.getLong("TWOWAYMAXDELAYVAR");
Long packetLoss = rs.getLong("PACKETLOSS");
}
} catch (SQLException se) {
System.err.println("ERROR: caught SQL exception, code: " + se.getErrorCode() +
", message: " + se.getMessage());
}
문제는이 같은 쿼리가 데이터를 반환 0 행을 반환한다는 것입니다 :
선택 insert_date, 레코드 원본, 서비스 id를 (2012 년 1 월 18 일 07:00:00 ','YYYY-MM-DD HH24 : MI : SS ') 및 to_date ('2012 년 1 월 1 일부터 2012 년 12 월 31 일까지) 사이에 시간 캡처되는 의 패킷 손실 -01-18 08:00:00 ','YYYY-MM-DD HH24 : MI : SS ') 주문 입력 : insert_date
DBMS_OUTPUT :
2012년 1월 18일 오전 10시 43분 36초 EV TAMP20-MTRO-NID1SYRC01-MTRO-NID1 1
INSERT_DATE 레코드 원본 서비스 id TIMECAPTURED ONEWAYMAXDELAY TWOWAYMAXDELAY TWOWAYMAXDELAYVAR PACKETLOSS/18/2012 7:25:24 AM 40822 79693 343 0
1/18/2012 10:43:36 AM EV SYRC01-MTRO-NID1TAMP20-MTRO-NID1 1/18/2012 7:25:13 AM 39642 79720 334 0
1/18/2012 10:43:36 AM EV TAMP20-MTRO-NID1SYRC01-MTRO-NID1 2012 년 1 월 18 일
나는 이런 문제에 대해 많은 게시물을 보았지만 준비가되지 않았지만 수 있습니다 아직 열쇠를 찾지 못했다!
내 쿼리에서 문자열을 사용하고 단순히 내 날짜를 문자열로 변환하여 Oracle TO_DATE 함수에 삽입 할 수있게하려고 생각했지만이 작업을 수행하면 안됩니다.
그리고 여기 내 println 문 출력이 있습니다. 인쇄하는 날짜에 시간 부분이 표시되지 않는 것이 문제입니까?
SQL 쿼리 : select timecaptured from oam1731data5 어디에서 시간을 캡처합니까? 그리고? 자바 오라클 날짜 : 2012-01-18 종료일 2012-01-18
미리 도움을 청하십시오.
미치
저는 그렇게 생각하지 않습니다. 기본적으로 쿼리는 날짜와 시간이 1/18/2012 00:00:00에서 1/18/2012 00:00:00 사이 인 모든 행을 검색합니다. 분명히, 어떤 것도 없습니다. –
2012 년 1 월 18 일 00:00:00부터 1/18/2012 00:00:00 사이에 날짜가있는 모든 행을 쿼리가 검색하는지 모르겠습니다. 그렇다면 분명히 옳습니다. 이해하는 가장 좋은 방법은 시작일 날짜의 값을 변경하고 시도하는 것입니다. –