나이 계산을 위해서는 주민번호 체계를 먼저 이해해야 합니다.
주민번호 : 8301161******
앞의 생년월일6자리 다음에 오는 자리는 일반적으로 성별을 판별하는 것으로 알고 있지만,
그 외에 나이를 계산하는 용도로도 사용이 됩니다.
- 7번째 자리 기준
1, 2 : 1900년대 생
3, 4 : 2000년대 생
9, 0 : 1800년대 생
이 기준으로 샘플 SQL을 만들어보겠습니다.
1. 일단, 계산을 위해 먼저 데이터를 만듭니다.
CREATE TABLE TMP_AGE AS
SELECT 8301161 FROM DUAL
UNION
SELECT 1401213 FROM DUAL
2. 생성된 데이터에 대해 나이 계산을 합니다.
SELECT BIRTH,
TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))-TO_NUMBER(
CASE WHEN SUBSTR(BIRTH,7,1) IN('1','2','5','6') THEN '19'
WHEN SUBSTR(BIRTH,7,1) IN('3','4','7','8') THEN '20'
END SUBSTR(BIRTH,1,2)) +1 AGE
---------------------------------------------------------------------
결과
| BIRTH | AGE |
| 8301161 | 39 |
| 1401213 | 8 |
3. 만 나이 계산
위 SQL에서 마지막 +1을 제거해주면 됩니다.
SELECT BIRTH,
TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))-TO_NUMBER(
CASE WHEN SUBSTR(BIRTH,7,1) IN('1','2','5','6') THEN '19'
WHEN SUBSTR(BIRTH,7,1) IN('3','4','7','8') THEN '20'
END SUBSTR(BIRTH,1,2)) AGE
'『우주라이크 개발' 카테고리의 다른 글
| jupyter notebook 확장 기능(nbextensions) (0) | 2021.01.14 |
|---|---|
| [UNIX Shell Programming] 로또 프로그램 예제1 (0) | 2018.03.09 |
| [UNIX 명령어] vi 사용법 / vi 주요 명령어 (0) | 2018.03.09 |
| [UNIX] FTP - GET PUT 파일전송 (0) | 2018.03.08 |
| SQL 올림, 내림, 반올림 함수(CEIL, TRIM, ROUND) (0) | 2018.03.08 |
댓글