Database/Oracle

[오라클] 주민번호로 만나이 계산하기

데브포유 2013. 8. 26. 09:47
반응형

SELECT :sno

             ,TO_NUMBER(TO_CHAR(SYSDATE,'yyyy')) - TO_NUMBER(SUBSTR( DECODE( SUBSTR(:sno, 7, 1),'3','20','4','20','7','20','8','20','19')||SUBSTR(:sno,0, 6 ),1,4)) -

       DECODE(GREATEST(SUBSTR(DECODE( SUBSTR(:sno, 7, 1),'3','20','4','20','7','20','8','20','19') || SUBSTR(:sno,0, 6 ),5,4),TO_CHAR(SYSDATE,'mmdd')),TO_CHAR(SYSDATE,'mmdd') ,0,1)  YEAR

FROM DUAL

;


----------------------------------------------

ex) 1800년대 사람은 고려하지 않음.

  1800 -> 남자는  0

              여자는  9

----------------------------------------------


반응형