dbunit 용 Oracle.sql.Timestamptz와 표준 JDBC 클래스를 변환합니다
문제
나는 Oracle 10G를 실행하고 있으며 type_name이있는 열이 있습니다
TIMESTAMP(6) WITH TIME ZONE
Java 클래스로 팽창하면 나옵니다
oracle.sql.TIMESTAMPTZ
그러나 DBunit은 Oracle 특정 클래스를 XML에 쓰기 위해 문자열로 변환 할 수 없습니다. 이 Oracle 특정 타임 스탬프에서 java.sql의 무언가로 변환 할 수있는 쉬운 방법이 있는지 궁금합니다 (예 : Select 문에서 어떻게 든).
해결책
나는이 문제를 정확하게 다룰 필요가 없었지만, 선택한 쿼리에서 문자열로 통과하는 것은 괜찮을 것이라고 생각합니다.
당신은 사용할 수 있습니다 to_char 기능. 문자열로 변환합니다. 예 :
SQL> select to_char(systimestamp, 'YYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;
D
----------------------------------
2008-10-21 17:00:43.501591
그런 다음 프로그램에 의해 문자열로 표시됩니다. TZD
시간대 정보 포함 (이 예에는 없음)
나중에 이것은 Java가 SimpledateFormat 수업.
대안 적으로, oracle.sql.timestamptz 클래스에는이라는 메소드가 있습니다 dateValue
a java.sql.Date
수업.
다른 팁
ISO 연도를 원하지 않는 한 IYYY를 연중 형식으로 사용하는 것은 좋은 생각이 아닐 수도 있습니다. iyyy 대신 yyyy를 사용해야합니다.
2012 년 31.12.2012의 SQL을 실행하십시오
select to_char(timestamp'2012-12-31 00:00:00 +00:00', 'IYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;
"2013-12-31 00 : 00 : 00 : 00.000000000"을 반환합니다.
제휴하지 않습니다 StackOverflow