반응형


DB 안에 있는 테이블 데이터를 핸들링할 때, 언제나 로그를 남겨야 한다.

데이터에 생성 날짜, 생성 시간, 수정 날짜, 수정 시간 등을 남겨서 언제 누가 핸들링을 했는지에 대한 기록이 있어야 추적하기가 편하다.

이 때, 시간과 관련된 데이터를 생성할 때 오라클(Oracle)에서 사용하는 것은 SYSDATE다.


SYSDATE

SYSDATE는 쿼리를 실행할 때를 기준으로 년도, 월, 일, 시, 분, 초까지 시간 데이터를 가져 온다.

기본적인 SYSDATE의 표현은 [년-월-일 시:분:초]로 출력이 되며, 자료형은 DATE 형이다.

SELECT SYSDATE
  FROM DUAL;

 

그래서 우리가 자료형이 DATE형인 SYSDATE 데이터를 문자열로 사용하기 위해

TO_CHAR 함수를 사용하여 SYSDATE를 바꾼다.

 

그래서, 아래와 같이 SYSDATE를 TO_CHAR 함수로 사용하면 YY/MM/DD 형식으로 출력을 한다.

SELECT TO_CHAR(SYSDATE)
  FROM DUAL;

 

여기서 SYSDATE를 다른 형식으로 바꾸고 싶으면, 아래와 같이 사용할 수 있다.

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')
  FROM DUAL;

-- 2023-02-08
 
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD')
  FROM DUAL;
  
-- 20230208

SELECT TO_CHAR(SYSDATE, 'YY-MM-DD')
  FROM DUAL;
  
-- 23-02-08

SELECT TO_CHAR(SYSDATE, 'YYMMDD')
  FROM DUAL;
  
-- 230208

 

이제 여기서, SYSDATE를 사용하여 각 나라별 시차를 구하는 방법이다.

SELECT TO_CHAR(SYSDATE + (시간차이/24), 'YYYYMMDD') AS TODAY_DATE
  FROM DUAL

 

위의 코드를 보면, 한국 시간을 기준으로 24시간 중에 시간 차이 만큼 더하면 특정 나라의 연도, 월, 일이 출력이 된다. 

 

아래는 우리나라에서 -15시간을 뺀 나라에 대한 기준이다. 물론, 15시간 차이나는 나라는 없다.

SELECT TO_CHAR(SYSDATE + (-15/24), 'YYYYMMDD') AS TODAY_DATE
  FROM DUAL


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기