먼저 삽입하려는 값을 보유하려면 열이 TIMESTAMP WITH TIME ZONE
유형이어야합니다. Oracle DATE
은 초 단위로 정확하며 시간대가 없습니다.
7 개의 0은 분 초입니다. TIMESTAMP WITH TIME ZONE
의 기본 정밀도는 소수점 이하 7 자리입니다. 초 단위로 세 자리를 지정하려면 열을 TIMESTAMP(3) WITH LOCAL TIME ZONE
으로 정의하십시오.
서버의 현재 시간 소인 SYSTIMESTAMP
에 의해 반환되는 실제 소수 자릿수는 운영 체제에 따라 다릅니다. 내 로컬 Windows 7 Oracle은 소수점 3 자리를 반환하지만 고객 중 한 곳의 Solaris OS는 소수점 6 자리를 반환합니다. 당신이 뭔가를 할 경우, 값을 삽입에 관해서는
...
insert into myTestTable (myTS) values ('2013-01-22T00:00:00.0000000-05:00');
... 오라클은 현재 NLS_TIMESTAMP_TZ_FORMAT
설정을 사용하여 타임 스탬프를 변환하려고합니다. 다음과 같이 설정을 쿼리 할 수 있습니다.
SELECT *
FROM NLS_Session_Parameters
WHERE Parameter = 'NLS_TIMESTAMP_TZ_FORMAT';
PARAMETER VALUE
----------------------- ----------------------------
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
내가 얻은 결과는 "공장 기본값"입니다. 너의 것은 아마 동일하고, 당신이 준 포맷과 일치하지 않는 것을 볼 수있다. 따라서 변환은 실패한다.
다른 대답이 올바르게 기록되면 TO_TIMESTAMP_TZ
함수와 형식 문자열을 사용하여 문자열을 타임 스탬프로 변환 할 수 있습니다.
insert into myTestTable (myTS)
values (TIMESTAMP '2013-01-22T00:00:00.0000000-05:00');
오라클 문서 타임 스탬프 리터럴 here : 당신은 또한 리터럴 ANSI 타임 스탬프를 사용할 수 있습니다. 링크는 모든 유형의 리터럴을 포함하므로 타임 스탬프 리터럴에 도달하기 위해 화면의 약 2/3을 스크롤 (또는 찾기)해야합니다.