전체/Oracle
DUAL 테이블에서 00~23 시 까지 입력된 컬럼에 현재 시간 찍기
effortDev
2017. 5. 18. 11:36
DUAL 테이블에서 00~23 시 까지 입력된 컬럼에 현재 시간 찍기 코드이다.
여러가지 방식을 사용할 수 있다.
1. CUBE 2의 n승 값을 주는 방법
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT A.STANDARD, DECODE(TO_CHAR(SYSDATE,'HH24'),STANDARD,'O','') AS MYTIME FROM ( SELECT CASE WHEN LEVEL-1 < 10 THEN '0' || TO_CHAR(LEVEL-1) WHEN LEVEL-1 < 24 THEN TO_CHAR(LEVEL-1) END AS STANDARD FROM DUAL CONNECT BY LEVEL <=24 ) A | cs |
2. CASE WHEN THEN ELSE END 조건문을 주는 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT A.STANDARD, B.MTIME FROM ( SELECT LPAD(LEVEL-1,2,'0') AS STANDARD FROM DUAL CONNECT BY LEVEL<=24 )A, ( SELECT TO_CHAR(SYSDATE,'HH24') AS MTIME FROM DUAL )B WHERE A.STANDARD = B.MTIME(+) ORDER BY A.STANDARD | cs |
3. LPAD 왼쪽에 위치 지정해 추가하는 방법
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT LPAD(ROWNUM-1,2,0) AS STANDARD, CASE WHEN TO_CHAR(SYSDATE,'HH24') = LPAD(ROWNUM-1,2,0) THEN 'O' END AS MYTIME FROM ( SELECT 1 FROM DUAL GROUP BY CUBE(1,1,1,1,1) ) WHERE ROWNUM <= 24 | cs |