오라클 시스템 스탬프(날짜 변경) - 밀리초
최신 정보를 얻기 위해 저장된 기능의 구현을 제공할 수 있습니까?systimestamp
밀리초 단위로
내가 사용할 수 있는 것.
select current_time_ms from dual;
그리고 현재 시간과 1970년 1월 1일 자정 UTC 사이의 차이를 밀리초 단위로 측정합니다.
감사해요.
- DB 표준 시간대 제한 없음
- 밀리초 단위로
- XE에서의 작업
함수 current_time_ms반송 번호이라out_결과 번호;시작한다.extract 선택(day from(sys_extract_utc(시스템스탬프)) - to_timestamp('1970-01-01', 'YYY-MM-DD')) * 86400000to_number(to_char(sys_extract_utc(시스템 스탬프)), 'SSSSSSFF3')결과적으로이중에서;결과를 반환합니다.종료 current_time_ms;
제가 아는 가장 좋은 것은:
select extract(day from (systimestamp - timestamp '1970-01-01 00:00:00')) * 86400000
+ extract(hour from (systimestamp - timestamp '1970-01-01 00:00:00')) * 3600000
+ extract(minute from (systimestamp - timestamp '1970-01-01 00:00:00')) * 60000
+ extract(second from (systimestamp - timestamp '1970-01-01 00:00:00')) * 1000 unix_time
from dual;
저는 당신이 시간대와 관련하여 어떤 요구 사항을 가지고 있는지 잘 모르겠습니다.당신은 그것에 대해 약간의 조정이 필요할 수도 있습니다.
@Mykhaylo Adamovich 답변에 추가(정확해 보입니다!)여기서는 Oracle Java 지원(즉, XE 및 AWS RDS에 없음)을 사용하는 보다 간단한 접근 방식을 설명합니다.휴대성이 떨어지지만(당신이 신경 쓸 경우) 테스트에서는 더 빨라 보였습니다.
CREATE or replace FUNCTION current_java_timestamp RETURN number
AS LANGUAGE JAVA NAME 'java.lang.System.currentTimeMillis() return java.lang.Long';
/
SELECT to_char(sysdate, 'HH24:MI:SS'), to_char(systimestamp, 'HH24:MI:SS.FF6') FROM dual
AFAIK, 수동으로 장황한 SQL 함수를 작성하는 것 외에 이를 달성할 수 있는 직접적인 방법이 없습니다.
특별히 이것이 필요한 이유가 무엇입니까?
저장된 Java 함수를 사용한 다음 Java에서 제공하는 System.getCurrentMillis()를 사용하여 1.1.1970년부터 현재까지 밀리초 단위의 값을 반환할 수 있습니다.
아래 코드는 차이를 밀리초 단위로 나타냅니다.
with t as (select systimestamp - to_timestamp(sysdate ) diff from dual)
select extract(day from diff) * 24 * 3600000+
extract(hour from diff) * 3600000+
extract(minute from diff) * 60000 +
extract(second from diff) * 1000
dif
from t
밀리초를 시, 분, 초로 변환하려면 아래 쿼리를 적절히 수정하고 사용합니다.
with t as (select systimestamp - to_timestamp(sysdate ) diff from dual)
select extract(day from diff) * 24 * 3600000+
extract(hour from diff) * 3600000+
extract(minute from diff) * 60000 +
extract(second from diff) * 1000
dif,
(to_char (to_date(round(( extract(day from diff) * 24 * 3600000+
extract(hour from diff) * 3600000+
extract(minute from diff) * 60000 +
extract(second from diff) * 1000)/1000), 'SSSSS' ), 'HH24"Hrs" MI"Min" SS"Sec"')) timeval
from t
저는 타임스탬프를 나노초로, 나노초를 타임스탬프로 변환하는 몇 가지 방법을 여기에 게시했습니다.이러한 방법은 시간대의 영향을 받지 않으며 나노초의 정밀도를 갖습니다.
나노초가 아니라 밀리초가 되도록 조정하면 됩니다.
SELECT (EXTRACT(DAY FROM (
SYSTIMESTAMP --Replace line with desired timestamp --Maximum value: TIMESTAMP '3871-04-29 10:39:59.999999999 UTC'
- TIMESTAMP '1970-01-01 00:00:00 UTC') * 24 * 60) * 60 + EXTRACT(SECOND FROM
SYSTIMESTAMP --Replace line with desired timestamp
)) * 1000 AS MILLIS FROM DUAL;
MILLIS
1598434427263.027
언급URL : https://stackoverflow.com/questions/7147982/oracle-systimestamp-sysdate-to-milliseconds
'programing' 카테고리의 다른 글
아이폰용 스크린샷 앱 시뮬레이터 (0) | 2023.07.20 |
---|---|
오라클 테이블에서 새 행 문자를 검색하는 방법은 무엇입니까? (0) | 2023.07.20 |
Django Rest Framework - 인증 자격 증명이 제공되지 않았습니다. (0) | 2023.07.20 |
Windows에 Visual Studio 2022만 설치된 MySQL 8을 설치할 수 없음 (0) | 2023.07.20 |
문자열을 데이터 프레임에서 부동으로 변환 (0) | 2023.07.20 |