나는 유닉스 시대 이후로 밀리 초를 날짜/시간으로 변환해야하는 PL/SQL 초보자입니다. GMT 날짜/시간으로 변환 할 수 있지만 시간대에 맞게 을 조정하는 방법을 알지 못합니다. 나는 가까이 있지만 아주 거기에 있지 않습니다.오라클 : 시간대가 포함 된 날짜/시간의 에포크 밀리 초
내 입력이
MpD NUMBER := (1/24/60/60/1000); -- Milleseconds per Day
DFmt24 VARCHAR2(21) := 'MM/DD/YYYY HH24:MI:SS'; -- Date format
TMPorig24 VARCHAR2(20);
. . .
TMPorig24 := TO_CHAR(DATE '1970-01-01' + MpD * r_msg.OriginationTime, DFmt24);
가 나는 그것이 GMT의 제외 할 것입니다
10/23/2013 18:15:00
같은 것을 제공 1382552100277
같은 값을 가지고 r_msg.OriginationTime이다.
이
TimeZoneOffset VARCHAR(7);
. . .
TimeZoneOffset := tz_offset('America/New_York');
-04:00
그래서 난 그냥
TMPorig24 := TMPorig24 + TimeZoneOffset;
같은 것을 할 필요가 있습니다하지만 난
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
를 얻을 수
몇 가지 변형을 시도했지만 아무 효과가 없습니다.
도움을 주시면 감사하겠습니다.
감사합니다.하지만 두 가지 해결책에 문제가 있습니다.
첫 번째 해결 방법은 시간대와 상관없이 동일한 시간을 인쇄합니다. 예를 들어, 동일한 값을 인쇄합니다.
TMPorig = TO_CHAR ( FROM_TZ (CAST (DATE TIMESTAMP AS '1970-01-01'+ (1/24/60/60/1000) * r_msg.OriginationTime), '미국/뉴욕') ' MM/DD/YYYY HH24 : MI : SS ');
TMPorig2 = TO_CHAR ( FROM_TZ (CAST (DATE '1970-01-01'+ (1/24/60/60/1000) * r_msg.OriginationTime TIMESTAMP AS), "태평양/Pago_Pago ')' MM/DD/YYYY HH24 : MI : SS ');
제 2 용액
TMPorig = TO_CHAR ( DATE '1970-01-01'+ (1/24/60/60/1000) * r_msg.OriginationTime + INTERVAL '-04 : 00 HOUR 분, 'MM/DD/YYYY HH24 : MI : SS'); 일광 절약 시간이 끝날 때 잘못된 것 '00 :
는
PLS-00166: bad format for date, time, timestamp or interval literal
Moveover, '04을 제공합니다. EST/EDT와 GMT 사이의 시간차에 대한 표현식이 필요합니다.
** ** * * ** * 작동이 PERFECT THANKS * ** * ** ** * * ** * *
TMPorig2 : = TO_CHAR ((UTC) 시간대 '아메리카/뉴욕 _', 'MM/월 _ DD/YYYY HH24 : MI : SS ');
좋아, 내 대답을 편집 한이 - 새로운 솔루션을 확인하십시오. –