위에가 MYSQL 쿼리고... 아래가 ORCLE쿼리.. CONCAT 으로 바꿔줬고.. DATE_FORMAT이란 걸로 대신하고 ㅠㅜ
위에는 :YEARMONTH란 변수 하나를 서브스트링 해서 나눴고 아래는 그냥 년이랑 월이랑 따로 받는건데.. 어차피 사용자에게 입력 받아서
변수 하나에 쳐 넣을거기 때문에 SUBSTR써서 자를 생각이야.
SELECT CASE WHEN CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))<900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=801
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=802 THEN \'유딩\'
WHEN CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=801
OR CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=802
OR (CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))>900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))<1900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=1801
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=1802) THEN \'10대\'
WHEN CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=1801
OR CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=1802
OR (CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))>1900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))<2900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=2801
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=2802) THEN \'20대\'
WHEN CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=2801
OR CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=2802
OR (CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))>2900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))<3900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=3801
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=3802) THEN \'30대\'
ELSE \'40대 이상\'
END 나이대
FROM DUAL
-----------
SELECT CASE WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=802 THEN \'유딩\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<1900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=1801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=1802) THEN \'10대\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=1801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=1802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>1900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<2900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=2801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=2802) THEN \'20대\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=2801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=2802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>2900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<3900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=3801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=3802) THEN \'30대\'
ELSE \'40대 이상\'
END 나이대
FROM dual
-------------------------------------
위에는 :YEARMONTH란 변수 하나를 서브스트링 해서 나눴고 아래는 그냥 년이랑 월이랑 따로 받는건데.. 어차피 사용자에게 입력 받아서
변수 하나에 쳐 넣을거기 때문에 SUBSTR써서 자를 생각이야.
SELECT CASE WHEN CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))<900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=801
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=802 THEN \'유딩\'
WHEN CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=801
OR CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=802
OR (CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))>900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))<1900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=1801
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=1802) THEN \'10대\'
WHEN CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=1801
OR CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=1802
OR (CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))>1900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))<2900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=2801
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=2802) THEN \'20대\'
WHEN CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=2801
OR CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))=2802
OR (CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))>2900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))<3900
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=3801
AND CONCAT(DATE_FORMAT( now() , \'%Y\' )-SUBSTR(:YEARMONTH,1,4),SUBSTR(:YEARMONTH,5,6))!=3802) THEN \'30대\'
ELSE \'40대 이상\'
END 나이대
FROM DUAL
-----------
SELECT CASE WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=802 THEN \'유딩\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<1900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=1801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=1802) THEN \'10대\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=1801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=1802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>1900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<2900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=2801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=2802) THEN \'20대\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=2801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=2802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>2900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<3900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=3801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=3802) THEN \'30대\'
ELSE \'40대 이상\'
END 나이대
FROM dual
-------------------------------------
위 소스가 더 알아보기 편하네...(난 mysql 유저.. 뭐 오라클을 먼저배웠지만 ㅋㅋ)