SYSDATE
시스템의 현재 날짜와 시간을 반환한다
결과는 'YY/MM/DD HH24:MI:SS'로 표시한다
SYSTIMESTAMP
시스템의 현재 날짜와 시간,분,초,밀리초를 등을 반환한다.
결과는 'YY/MM/DD HH24:MI:SS.FF TZR TZD'로 표시한다
EXTRACT
SELECT
EXTRACT(추출할요소 FROM 날짜컬럼)
FROM
테이블;
함수 사용 | 설명 |
EXTRACT(YEAR FROM 날짜데이터 ) | 연도 |
EXTRACT( MONTH FROM 날짜데이터 ) | 월 |
EXTRACT( DAY FROM 날짜데이터 ) | 일 |
EXTRACT( HOUR FROM 날짜데이터) | 시간 |
EXTRACT( MINUTE FROM 날짜데이터 ) | 분 |
EXTRACT( SECOND FROM 날짜데이터 ) | 초 |
DATE 타입의 데이터를 지정한 요소만 추출해 NUMBER 타입으로 표시해준다.
현재시간에서 추출 할 때 시간부터는 SYSTIMESTAMP만 사용하도록 한다.
만약 계속 SYSDATE를 사용한다면
[ORA-30076: 발췌 소스에 발췌 필트가 부적당합니다] 라는 메세지가 표시된다.
TO_CHAR
SELECT
TO_CHAR(날짜데이터,'포맷')
FROM
테이블;
함수사용 | 설명 | SYSDATE 추출결과 |
TO_CHAR( 날짜데이터, 'YYYY' ) | 연도를 4자로 표시 | 2023 |
TO_CHAR( 날짜데이터, 'YY' ) | 연도를 2자로 표시 | |
TO_CHAR( 날짜데이터, 'MM' ) | 월을 2자로 표시 | 09 |
TO_CHAR( 날짜데이터, 'MON' ) | 월을 X월, XX월로 표시 | 9월 |
TO_CHAR( 날짜데이터, 'DD' ) | 일자를 2자로 표시 | 27 (1일인경우 '01'로 표시) |
TO_CHAR( 날짜데이터, 'DDD' ) | 1년중 몇 번째날인지 3자로 표시 | 270 (1월1일인경우 '001'로 표시) |
TO_CHAR( 날짜데이터, 'D' ) | 한 주중 몇 번째 날인지 표시 (1은 일요일 ) | 4 |
TO_CHAR( 날짜데이터, 'DAY' ) | 요일 3자로 표시 | 수요일 |
TO_CHAR( 날짜데이터, 'DY' ) | 요일을 1자로 표시 | 수 |
TO_CHAR( 날짜데이터, 'WW' ) | 1년중 몇 번째 주인지 표시 | 39 |
TO_CHAR( 날짜데이터, 'W' ) | 1달중 몇 번째 주인지 표시 | 4 |
TO_CHAR( 날짜데이터, 'AM' ) | 오전인지 오후인지 표시(PM과 동일) | 오후 |
TO_CHAR( 날짜데이터, 'PM' ) | 오전인지 오후인지 표시(AM과 동일) | 오후 |
TO_CHAR( 날짜데이터, 'HH' ) | 시간을 01~12시로 표시 | 07 |
TO_CHAR( 날짜데이터, 'HH24' ) | 시간을 01~24시로 표시 | 19 |
TO_CHAR( 날짜데이터, 'MI' ) | 분을 0~59분으로 표시 | 16 |
TO_CHAR( 날짜데이터, 'SS' ) | 초를 01~ 5초로 표시 | 05 |
DATE데이터를 CHAR타입으로 변환시켜주는 TO_CHAR()을 이용하여
날짜데이터를 원하는 포맷으로 표시할 수 있다.
고정문자열이기때문에 1월, 1일도 '01'로 표시된다.
0을 없애고 싶을 땐 포맷앞에 FM을 같이 넣어주거나 NUMBER타입으로 변환한다.
EXTRACT와의 차이점은 타입 차이도 있지만 TO_CHAR()가 포맷이 더 많은편이다.
포맷 | 출력결과 |
TO_CHAR( 날짜데이터, 'YYYYMMDD' ) | 20230927 |
TO_CHAR( 날짜데이터, 'YYYY-MM-DD' ) | 2023-09-27 |
TO_CHAR( 날짜데이터, 'YYYY/MM/DD' ) | 2023/09/27 |
TO_CHAR( 날짜데이터, 'YY/MM/DD' ) | 23/09/27 |
TO_CHAR( 날짜데이터, 'DL' ) | 2023년 9월 27일 수요일 |
TO_CHAR( 날짜데이터, 'HH:MI:SS' ) | 08:20:23 |
TO_CHAR( 날짜데이터, 'HH24:MI:SS' ) | 20:20:23 |
정해진 포맷 외에 원하는 표시형식이 있다면 SUBSTR, ||로 조합하여 붙여줄 수 있다.
SELECT
TO_CHAR(SYSDATE,'YYYY')||'년의 '||TO_CHAR(SYSDATE,'DDD')||'번째 날입니다.'
FROM
DUAL;
오라클 공식문서