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


+ Recent posts