반응형
Oracle current_timestamp를 초 단위로 변환
우리는 오라클 데이터베이스를 사용하고 있습니다.
1970년 이후로 테이블 타임스탬프가 초로 저장됩니다. current_timestamp() 함수를 통해 얻은 타임스탬프를 초로 변환하려면 어떻게 해야 합니까?
이렇게 하면 됩니다.
select round((cast(current_timestamp as date) - date '1970-01-01')*24*60*60) from dual
몇 초에만 관심이 있다면 current_timestamp를 사용하지 않겠지만, SYSDATE를 사용할 것입니다.
select round((SYSDATE - date '1970-01-01')*24*60*60) from dual
완전히 관련이 있는 것은 아닐 수도 있습니다.다른 방법으로 문제(예: Oracle이 V$RMAN_STATUS 및 V$RMAN_OUTPUT에 타임스탬프를 저장)를 해결해야 했고 이를 날짜/타임스탬프로 변환해야 했습니다.깜짝 놀랐는데 마법의 날짜는 1970-01-01이 아니라 1987-07-07입니다.오라클의 역사를 살펴봤는데 가장 가까운 시기는 오라클 제품을 UNIX로 포팅한 시기입니다.이게 맞나
여기 내 SQL이 있습니다.
SELECT /*+ rule */
to_char(min(stamp)/(24*60*60) + date '1987-07-07', 'DD-MON-YYYY HH24:MI:SS') start_tm
, to_char(to_char(max(stamp)/(24*60*60) + date '1987-07-07', 'DD-MON HH24:MI:SS')) end_tm
FROM V$RMAN_STATUS
START WITH (RECID, STAMP) =
(SELECT MAX(session_recid),MAX(session_stamp) FROM V$RMAN_OUTPUT)
CONNECT BY PRIOR RECID = parent_recid ;
Oracle DB에서 GELF를 통해 GrayLog로 타임스탬프를 전송해야 했습니다.다른 버전과 솔루션을 시도했지만 하나만 제대로 작동했습니다.
SQL:
SELECT REPLACE((CAST(dat AS DATE) - TO_DATE('19700101', 'YYYYMMDD')) * 86400 + MOD(EXTRACT(SECOND FROM dat), 1), ',', '.') AS millis
FROM (SELECT SYSTIMESTAMP AT TIME ZONE 'GMT' AS dat FROM dual)
시스템 스탬프 결과
2018/12/18 19:47:29,080988 +02:00
될 것이다
1545155249.080988
언급URL : https://stackoverflow.com/questions/5881235/oracle-current-timestamp-to-seconds-conversion
반응형
'IT' 카테고리의 다른 글
jQuery를 사용하여 상대 경로 결정 (0) | 2023.08.26 |
---|---|
숫자를 6 PHP로 나눌 수 있는지 확인하기 (0) | 2023.08.26 |
Spring Boot에서 Kafka 소비자 활성화/비활성화 제어 (0) | 2023.08.26 |
CSS로 입력 및 제출 버튼을 스타일화하는 방법은 무엇입니까? (0) | 2023.08.26 |
일치하는 와일드카드가 엄격하지만 'tx:notation-driven' 요소에 대한 선언을 찾을 수 없습니다. (0) | 2023.08.26 |