새소식

DB

Oracle 날짜 포맷 변환 총 정리

  • -
728x90

🔥 현재 시간을 특정 포맷으로 변경

👉 날짜 포맷 변환

SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL;

 

👉  하루 뒤 날짜 구하기

SELECT TO_CHAR(SYSDATE +1, 'YYYYMMDD') FROM DUAL;

 

👉  7일 뒤 날짜 구하기

SELECT TO_CHAR(SYSDATE +7, 'YYYYMMDD') FROM DUAL;

 

👉  현재 시간을 특정 포맷으로 변경

SELECT TO_CHAR(SYSDATE, 'YYYYMMDD HH:mm:ss') FROM DUAL; --현재일 시분초
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD) FROM DUAL; --현재일
SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD) FROM DUAL; --현재일
SELECT TO_CHAR(SYSDATE, 'HH:mm:ss') FROM DUAL; --시분초
SELECT TO_CHAR(SYSDATE, 'hh24:mi:ss') FROM DUAL; --시분초(24시간제)

 

👉  String(문자) 타입을 Date로 변환

select to_date('2024-01-31', 'YYYY-MM-DD'),
       to_date('2024/01/31', 'YYYY/MM/DD'),
       to_date('31/01/2024', 'DD/MM/YYYY'),
       to_date('24-11월-2024', 'DD-Mon-YYYY'),
       to_date('11월', 'Mon')
from dual;

🧙 응용

👉 CSV로 DB에 집어넣으면 '31/1/2024' 이렇게 들어갈 때도 있습니다 = ㅅ =

 /를 기준으로 Oracle Tokenize를 진행하시면 됩니다.

참고로, 저의 경우 월에 0이 붙어있지 않아 날짜 포맷 변환이 불가능하였습니다.

때문에, 1~9월인 경우 왼쪽에 0을 붙이는 로직을 구현하였습니다.

SELECT
	REGEXP_SUBSTR('31/1/2024', '[^/]+', 1, 3) || LPAD(REGEXP_SUBSTR('31/1/2024', '[^/]+', 1, 2), 2, '0') || LPAD(REGEXP_SUBSTR('31/1/2024', '[^/]+', 1, 1), 2, '0') AS result
from dual

 

If I was of any help to you, please buy me coffee 😿😢😥

If you have any questions, please leave them in the comments

🧭 References

[1] reference : https://doctorson0309.tistory.com/

[2] Ads : https://play.google.com/store/apps/details?id=io.cordova.seoulfilter

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.