─━ IT ━─

[Oracle] CURRENT_DATE, CURRENT_TIMESTAMP 사용법 및 예시

DKel 2021. 2. 11. 08:01
반응형

CURRENT_TIMESTAMP의 사용 예시

 

문법

CURRENT_DATE - 모든 Oracle 9i
CURRENT_TIMESTAMP ( precision )
LOCALTIMESTAMP ( precision )
return [datetime | timestamp | timestamp with timezone]

 

파라미터

precision 초 이하의 정밀도 (1-9) default 6

 

리턴

데이터베이스 시스템 날짜 또는 시스템의 시간대가 있는 타임스탬프

 

조건

SQL 및 PL / SQL 모두에서 사용할 수 있습니다.

 

내용

CURRENT_~는 "데이터베이스 서버"를 호스트하는 OS 호출로 취득한 날짜를 

세션 시간대 로 변환된 현재 날짜와 시간 (년 ~ 초)을 리턴한다. 시간대에 대한 정보는 포함되지 않는다.

 

CURRENT_TIMESTAMP

즉 TIMESTAMP 형은 아니고 TIMESTAMP WITH TIMEZONE 형이다.

이 데이터 유형 의 차이를 사소한 것으로 생각하면 안된다.

EXTRACT 함수에서 2 개의 다른 결과를 얻을 것이다. (아래 참고 참조)

시간대는 "세션 시간대 '로 변환된다. 기본 정밀도는 6 자리, Oracle 10g의 시점에서 최대 9 자리까지 지정할 수 있다.

 

LOCALTIMESTAMP

CURRENT_TIMESTAMP와 기능적으로는 비슷하며 "세션 시간대 '로 변환된 타임스탬프를 리턴하지만

TIMESTAMP 형태를 복원 (※). 즉, 세션 시간대의 타임 스탬프로 변환되어 있지만 시간대 정보는 삭제되어 있다.

(※) 반환 값의 데이터 유형은 TIMESTAMP WITH LOCAL TIME ZONE 형이 아니다.

 

주의

CURRENT_DATE와 LOCALTIMESTAMP과 시스템 날짜는 다른 것이다. 시스템 날짜 는 SYSDATE와 SYSTIMESTAMP을 나타낸다.

EXTRACT에서 CURRENT_TIMESTAMP 반환 사용하면 UTC 시간이 되돌려진다. ⇒ EXTRACT 함수와 CURRENT_TIMESTAMP 함수

 

예시

CURRENT_DATE의 사용 예

SQL> select  CURRENT_DATE  from dual ;
 
CURRENT_DATE
 ------------------- 
2021-02-05 18:28:54

 

CURRENT_TIMESTAMP의 사용 예

사용 환경이 Windows 기반이기 때문에, 초 이하의 정밀도가 3 자리까지 밖에 없다. (OS에 따라 다름)

SQL> select  CURRENT_TIMESTAMP  from dual ;
 
CURRENT_TIMESTAMP
 --------------------------------
21-02-05 16 : 37 : 04.281000 +09 : 00
 
SQL> select  CURRENT_TIMESTAMP (1), CURRENT_TIMESTAMP (3) from dual ;
 
CURRENT_TIMESTAMP (1)                CURRENT_TIMESTAMP (3)
 ---------------------------------- -------- --------------------------
21-02-05 16 : 37 : 04.3 +09 : 00 21-02-05 16 : 37 : 04.296 +09 : 00
 
SQL> select  CURRENT_TIMESTAMP (6), CURRENT_TIMESTAMP (9) from dual ;
 
CURRENT_TIMESTAMP (6)                CURRENT_TIMESTAMP (9)
 ---------------------------------- -------- -------------------------- 
21-02-05 16 : 37 : 04.296000 +09 : 00 21-02-05 16 : 37 : 04.296000000 +09 : 00

 

SYSDATE와 CURRENT_DATE의 차이

SQL> alter session set time_zone = 'UTC' ;
SQL> select  CURRENT_DATE , sysdate , TZ_OFFSET ( sessiontimezone ) from dual ;
 
CURRENT_DATE         SYSDATE              TZ_OFFSET (SESS
 ------------------- ------------------- ------- ------- 
2021-02-05 05:20:15 2021-02-05 14:20:15 +00 : 00

 

SYSTIMESTAMP와 CURRENT_TIMESTAMP의 차이

SQL> alter session set time_zone = 'Asia/Seoul' ;
SQL> alter session set nls_timestamp_tz_format = 'RR-MM-DD HH24 : MI : SS.FF TZR' ;
 
SQL> select  CURRENT_TIMESTAMP , systimestamp  from dual ;
 
CURRENT_TIMESTAMP                 SYSTIMESTAMP
 -------------------------------- ---------------- ---------------- 
21-02-05 : 59 : 05.062000 Asia/Seoul 21-02-05 16 : 59 : 05.062000 +09 : 00

 

LOCALTIMESTAMP와 CURRENT_TIMESTAMP의 차이

SQL> alter session set time_zone = 'Asia/Seoul' ;
SQL> alter session set nls_timestamp_tz_format = 'RR-MM-DD HH24 : MI : SS.FF TZD' ;
 
SQL> select  LOCALTIMESTAMP , current_timestamp  from dual ;
 
LOCALTIMESTAMP                    CURRENT_TIMESTAMP
 -------------------------------- ---------------- ---------------- 
21-02-05 07 : 13 : 26.031000 21-02-05 07 : 13 : 26.031000 KST

 

 

 

반응형