Oracle 과 PostgreSQL 에서 Timestamp 형 기원전, 후 수치 에 대한 상세 한 설명 및 JDBC 액세스
3757 단어 OaclePostgreSQLTimestampbcad
value1: 2010-01-01
value2: 2010-01-01BC
1. 데이터베이스 에 직접 수 치 를 삽입 할 때:
Oacle 은 to 를 사용 해 야 합 니 다.timestamp('2010-01-01','yyyy-mm-ddBC'),
PG 는 문자열 '2010 - 01 - 01BC' 를 직접 사용 할 수 있다.
2. 데이터베이스 에서 직접 조회 할 때:
Oacle 데이터베이스 에서 date 필드 를 직접 조회 합 니 다. value 1 과 value 1 디 스 플레이 는 다 르 지 않 습 니 다. 모두 2010 - 01 - 01 입 니 다.
사용 tochar (time, 'dd - mm - yyybc', 'nls date language = American') 에서 야 bc 와 ad 를 표시 합 니 다.다음 과 같다.
SQL> select time,to_char(time,'dd-mm-yyyybc','nls_date_language=American') AS TRUDATE;
TIME TRUEDATE
---------------------------------------------------------------------------
01-JAN-10 12.00.00.000000 AM 01-01-2010bc
01-JAN-10 12.00.00.000000 AM 01-01-2010ad
PG 에서: 직접 조회 하면 BC 를 표시 할 수 있 습 니 다. 다음 과 같 습 니 다.
highgo=# select * from testtime;
id | time
----+------------------------
1 | 2010-01-01 00:00:00
2 | 2010-01-01 00:00:00 BC
3. 자바 에 서 는 각각 value 1 과 value 2 의 문자열 값 (copy 에 사용) 과 시간 스탬프 값 (insert, 바 인 딩 매개 변수 에 사용) 을 가 져 옵 니 다.
자바 코드:
System.out.println("DataType: "+rs.getMetaData().getColumnTypeName(1));
rs.next();
System.out.println("getString: " + rs.getString(1));
Timestamp time1= rs.getTimestamp(1);
System.out.println("getTimestamp: " + time1);
rs.next();
System.out.println("getString: " + rs.getString(1));
Timestamp time2= rs.getTimestamp(1);
System.out.println("getTimestamp: " + time2);
System.out.println("time1Compare2Time2: "+ time1.compareTo(time2));
Oracle 의 출력 결과:
DataType: TIMESTAMP getString: 2010-01-01 00:00:00.0 getTimestamp: 2010-01-01 00:00:00.0 getString: -2010-01-01 00:00:00.0 getTimestamp: 2011-01-01 00:00:00.0 time1Compare2Time2: 1 분석: 이 결 과 는 자바 가 얻 은 문자열 이 시간 기 호 를 가 진 것 임 을 설명 한다. 얻 은 시간 스탬프 는 기 호 를 가지 고 있 지 않 지만 비교 결 과 는 정확 하 다 (2010 - 01 - 01 은 2010 - 01 - 01 BC 보다 미래 적 이다). 그러나 얻 은 시간 스탬프 는 기호 가 없 는 기괴 한 값 이다. 인터넷 을 검색 하여 PG 문서 에 부합 되 는 해석 을 얻 었 다.(일치 하지만 정확성 은 보장 되 지 않 습 니 다. 더 확인 해 야 합 니 다.) BC 가 지정 되 었 다 면, year 를 무시 하고 내부 스토리 지 에 대해 하 나 를 추가 하 십시오. (Gregorian 캘 린 더 에는 year zero 가 없 으 므 로 numerically BC 1 은 year zero 가 됩 니 다.)BC 가 밝 혀 지면 연도 에 마이너스 와 하 나 를 더 해 내부 저장 에 사용 한 다 는 뜻 이다. 그 레 고리 역법 에는 0 년 이 없 기 때문에 숫자 상의 1BC 는 서기 0 년 이다.http://www.postgresql.org/docs/9.2/interactive/datetime-input-rules.html)
PG 의 출력 결과:
DataType: timestamp getString: 2010-01-02 00:00:00 getTimestamp: 2010-01-02 00:00:00.0 getString: 2010-01-02 00:00:00 BC getTimestamp: 2010-01-02 00:00:00.0 time1Compare2Time2: 1 분석: 이 결과 의 문자열 은 기원전 을 표시 하지만 얻 은 시간 스탬프 는 아무런 차이 가 없 지만 두 시간 스탬프 를 비교 한 결 과 는 여전히 정확 하 다 (즉 2010 - 01 - 01 은 2010 - 01 BC 보다 미래 적 이다).
4. PG 에서 Timestamp 의 COPY 상황 테스트:
마이너스 시간 스탬프 (즉 기원전 시간) 는 copy 를 사용 할 수 없습니다.
우 리 는 BC 가 있 는 시간 스탬프 를 테스트 하 러 왔 는데, 결 과 는 BC 가 있 는 시간 스탬프 는 copy 를 사용 할 수 있 었 다.
텍스트 time. csv 에 다음 내용 을 저장 하고 copy testttime from 'G: / time. csv' with csv 를 사용 합 니 다. 결과 copy 가 성공 하여 데 이 터 를 조회 하 는 데 오류 가 없습니다.
"3","2011-01-02 00:00:00"
"4","2011-01-02 00:00:00 BC"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 작업 은 Clob 또는 NClob 데이터 형식의 저장 프로 세 스 인 스 턴 스 를 포함 합 니 다.텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.