728x90
오라클 나이 계산하기
만나이, 일수 + 1세 미만은 개월수로 계산하는 쿼리문
WITH CHILD AS (
SELECT '동수' NAME, TO_DATE('20240813', 'YYYYMMDD') BIRTHDAY FROM DUAL UNION ALL
SELECT '민희' NAME, TO_DATE('20111125', 'YYYYMMDD') BIRTHDAY FROM DUAL UNION ALL
SELECT '영숙' NAME, TO_DATE('20020401', 'YYYYMMDD') BIRTHDAY FROM DUAL UNION ALL
SELECT '경자' NAME, TO_DATE('19970107', 'YYYYMMDD') BIRTHDAY FROM DUAL
)
SELECT NAME
, TO_CHAR(BIRTHDAY, 'YYYY-MM-DD') BIRTHDAY
, CASE WHEN TRUNC(SYSDATE) - BIRTHDAY <= 30 THEN
TRUNC(SYSDATE) - BIRTHDAY + 1 || '일'
WHEN MONTHS_BETWEEN(TRUNC(SYSDATE), BIRTHDAY) < 12 THEN
TRUNC(MONTHS_BETWEEN(TRUNC(SYSDATE), BIRTHDAY)) || '개월'
ELSE
TRUNC(MONTHS_BETWEEN(TRUNC(SYSDATE), BIRTHDAY) / 12 ) || '세'
END AGE
FROM CHILD;
오라클 주민등록번호로 2000년대생 나이 계산하기
9: 1800 ~ 1899년에 태어난 남성
0: 1800 ~ 1899년에 태어난 여성
1: 1900 ~ 1999년에 태어난 남성
2: 1900 ~ 1999년에 태어난 여성
3: 2000 ~ 2099년에 태어난 남성
4: 2000 ~ 2099년에 태어난 여성
5: 1900 ~ 1999년에 태어난 외국인 남성
6: 1900 ~ 1999년에 태어난 외국인 여성
7: 2000 ~ 2099년에 태어난 외국인 남성
8: 2000 ~ 2099년에 태어난 외국인 여성
WITH BASE AS (
SELECT '영숙' AS NAME, '2409104111111' AS AGE FROM DUAL UNION ALL
SELECT '민지' AS NAME, '9901051111111' AS AGE FROM DUAL UNION ALL
SELECT '정숙' AS NAME, '1811063111111' AS AGE FROM DUAL UNION ALL
SELECT '옥순' AS NAME, '2112083111111' AS AGE FROM DUAL UNION ALL
SELECT '순자' AS NAME, '9111062111111' AS AGE FROM DUAL
)
SELECT
NAME,
TO_CHAR(TO_DATE(CASE WHEN SUBSTR(AGE,7,1) IN ('1','2','5','6') THEN '19' WHEN SUBSTR(AGE,7,1) IN ('3','4','7','8') THEN '20' END||SUBSTR(AGE,1,6),'YYYYMMDD'),'YYYY-MM-DD') AS BIRTH_YMD
FROM BASE;
➡️ 쿼리 실행 결과
'Oracle' 카테고리의 다른 글
오라클 기본 캐릭터셋 조회 nls_database_parameters / NLS_CHARACTERSET (0) | 2024.08.22 |
---|---|
오라클 기본 설정 DATE 타입 조회 nls_session_parameters (0) | 2024.08.22 |
오라클 테이블 row 길이, 테이블 사이즈, 인덱스 사이즈 조회하기 (0) | 2024.08.06 |
오라클 쿼리로 $ORACLE_HOME 경로, 오라클 정보 확인 (0) | 2024.07.17 |
오라클 프로시저 펑션 내용 검색하기 (0) | 2024.07.01 |