[³¯Â¥Çü ÇÔ¼ö]    

¢Ñ  ADD_MONTHS 

 

1. Á¤ÀÇ : ÁöÁ¤ÇÑ ³¯Â¥·ÎºÎÅÍ Æ¯Á¤ °³¿ùÀ» ´õÇÑ ³¯Â¥¸¦ ±¸ÇÔ 
2. »ç¿ë¿¹)
SELECT  ADD_MONTHS(SYSDATE, 25) FROM DUAL;
     °á°ú) 2010/04/17 17:04:36   
3. Âü°í : -(minus)°ªÀÏ °æ¿ì  ¿ùÀ» Â÷°¨ÇÑ´Ù.

 
   
 
   
¢Ñ SYSDATE
 

1. Á¤ÀÇ : ÇöÀç ½Ã½ºÅÛÀÇ ³¯Â¥ ¹× ½Ã°£À» ±¸ÇÔ
2. »ç¿ë¿¹)
SELECT  SYSDATE FROM DUAL;
     °á°ú) 2008/03/17 16:52:16   

¢Ñ LAST_DAY

 

1. Á¤ÀÇ : ÁöÁ¤ÇÑ ³¯Â¥ÀÇ ÇØ´ç ¿ùÀÇ ¸»ÀÏÀ» ±¸ÇÔ
2. »ç¿ë¿¹)
SELECT  LAST_DAY(SYSDATE) FROM DUAL;
     °á°ú) 2008/03/31 16:52:16

¢Ñ NEXT_DAY
 

1. Á¤ÀÇ : ÁöÁ¤ÇÑ ³¯Â¥·ÎºÎÅÍ °¡Àå °¡±õ°Ô ´Ù°¡¿Ã ÇØ´ç ¿äÀÏÀÇ ³¯Â¥¸¦ ±¸ÇÔ
2. ±â´É : ¿äÀϱ¸ºÐ : 1 - ÀÏ¿äÀÏ
                     2 - ¿ù¿äÀÏ ....
                     7 - Åä¿äÀÏ
3. »ç¿ë¿¹) 
SELECT  NEXT_DAY(TO_DATE('20080317'), 1) FROM DUAL;
     °á°ú) 2008/03/22 00:00:00 

¢Ñ MONTHS_BETWEEN
 

1. Á¤ÀÇ : µÎ ³¯Â¥ »óÀÌÀÇ °³¿ù ¼ö¸¦ ±¸ÇÔ
2. »ç¿ë¿¹)
SELECT  MONTHS_BETWEEN(TO_DATE('20100505'), SYSDATEFROM DUAL;
     °á°ú) 25.5900....   

¢Ñ ³¯Â¥¿¡ ´ëÇÑ ¿äÀÏ ±¸Çϱâ
 

1. Á¤ÀÇ : ³¯Â¥¿¡ ´ëÇÑ ¿äÀÏ ±¸Çϱâ 
2. »ç¿ë¿¹)
SELECT  TO_CHAR(SYSDATE, 'DY') FROM DUAL;
     °á°ú) È¯°æ¿¡ µû¶ó¼­ : ¿ù,È­,¼ö,~~    ÀÏ  (ÇѱÛ)
                           MON,THE,WED~~, SUN  (¿µ¹®)
     * Ç×»ó Çѱ۷Π¿øÇÒ °æ¿ì
           (Oracle¼Ó¼ºÀ» ¹Ù²Ü ¼öµµ ÀÖÁö¸¸ ¾Æ·¡¿Í °°ÀÌ ÇÑ sql¿¡¼­¸¸ Àû¿ë½Ãų¼öµµ ÀÖ´Ù)
           
SELECT  TO_CHAR(SYSDATE, 'DY', 'NLS_DATE_LANGUAGE=KOREAN') FROM
 DUAL;

   »ç¿ë¿¹2) SELECT  TO_CHAR(SYSDATE, 'D') FROM DUAL;
       °á°ú) 1,2 ~~ 7;  --¼ýÀÚ·Î ³ª¿È (1:ÀÏ, 2:¿ù, ~~  7:Åä¿äÀÏ)

¢Ñ ¿ùº° ÁÖÂ÷ ±¸Çϱâ

 

1. Á¤ÀÇ : ÇØ´ç ¿ùº°·Î ÁÖÂ÷(1~6ÁÖ)¸¦ ±¸ÇÑ´Ù.
2. 1ÁÖ¸¦ ->
ÀÏ ~ Åä ±îÁö ±âÁØÀÏ °æ¿ì SQL
   
SELECT '20101205'
     ,
CEIL((substrb('20101205', -2, 2) + 7 - TO_CHAR(TO_DATE('20101205', 'yyyymmdd'), 'D')) / 7) as "ÁÖÂ÷"
  
FROM DUAL;

3. 1ÁÖ¸¦ ->
¿ù ~ ÀÏ ±îÁö ±âÁØÀÏ °æ¿ì SQL - Á¾·ù1 (¸¸¾à, ¸Å¿ù1ÀÏÀÌ  ÀÏ¿äÀÏÀÌ¸é   02ÀÏÀ» 1ÁÖ·Î º»´Ù.)
   
SELECT  DECODE(WC, 0, 1, WC)
   
FROM  (
           
SELECT '20081231' DT
                ,
CEIL((substrb('20081231', -2, 2) + 7 - DECODE(TO_CHAR(TO_DATE('20081231', 'yyyymmdd'), 'D'), 1, 1, 0)
                        -
DECODE(TO_CHAR(TO_DATE('20081231','yyyymmdd'),'D'), 1, 7, (TO_CHAR(TO_DATE('20081231','yyyymmdd'),'D')))
                       ) / 7) as WC
             
FROM DUAL
         )
    ;

3. 1ÁÖ¸¦ ->
¿ù ~ ÀÏ ±îÁö ±âÁØÀÏ °æ¿ì SQL - Á¾·ù2 (¸¸¾à, ¸Å¿ù1ÀÏÀÌ  ÀÏ¿äÀÏÀÌ¸é   02ÀÏÀ» 1ÁÖ·Î º»´Ù.)
                                         - À§ Á¾·ù1 SQL¹®ÀåÀ» Á»´õ º¸±â ÁÁ°Ô  Á¾·ù2 SQL ¹®À¸·Î ´Ü¼ø º¯È­¸¸ ½ÃÄ×À½.
  
SELECT CEIL((DD + 7 - SUN- DECODE( YO, 1, 7, YO)) / 7) as WC
  
FROM (
        
SELECT SUBSTR('20090302', -2, 2)                                                                                   AS DD
             ,
DECODE(SUBSTR('20090302', -2, 2), '01', 0, DECODE(TO_CHAR(TO_DATE('20090302', 'yyyymmdd'), 'D'), 1, 1, 0))  AS SUN
             , TO_CHAR(TO_DATE('
20090302', 'yyyymmdd'), 'D')                                                               AS YO
        
FROM   DUAL
       ) ;

3. 1ÁÖ¸¦ ->
¿ù ~ ÀÏ ±îÁö ±âÁØÀÏ °æ¿ì SQL - Á¾·ù3  (¸¸¾à, ¸Å¿ù1ÀÏÀÌ  ÀÏ¿äÀÏÀÌ¸é   02ÀÏÀ» 2ÁÖ·Î º»´Ù.)
  
SELECT CEIL((DD + 7 + SUN- DECODE( YO, 1, 7, YO)) / 7) as WC
  
FROM (
        
SELECT SUBSTR('20090301', -2, 2)                                                                                    AS DD
             ,
DECODE(SUBSTR('20090301', -2, 2), '01', 0, DECODE(TO_CHAR(TO_DATE('20090301', 'yyyymmdd'), 'D'), 1, -1, 1))  AS SUN
             , TO_CHAR(TO_DATE('
20090301', 'yyyymmdd'), 'D')                                                                AS YO
        
FROM
  DUAL
       ) ;

A. Á¤ÀÇ : ¿ùº°  ¸îÁÖÂ÷±îÁö Á¸Àç ÇÏ´ÂÁö Á¶È¸
   
¿¹¹®1 : 201012   ¿ù¿¡ ´ëÇØ¼­   ¸îÁÖÂ÷±îÁö ÀÖ´ÂÁö Á¶È¸

  
SELECT CEIL((DD + 7 + SUN- DECODE( YO, 1, 7, YO)) / 7) as WC
  
FROM (
        
SELECT SUBSTR(WORKDT, -2, 2)                                                                                AS DD
             ,
DECODE(SUBSTR(WORKDT, -2, 2), '01', 0, DECODE(TO_CHAR(TO_DATE(WORKDT, 'yyyymmdd'), 'D'), 1, -1, 1))  AS SUN
             , T
O_CHAR(TO_DATE(WORKDT, 'yyyymmdd'), 'D')                                                            AS YO
        
FROM   (SELECT TO_CHAR(ADD_MONTHS('201012
' || '01', 1) - 1, 'YYYYMMDD') WORKDT FROM DUAL)
       ) ;
  °á°ú : 5

   
¿¹¹®2 : 2010³âµµ 1~12¿ù±îÁö  °¢¿ùº° ÁÖÂ÷ ±¸Çϱâ

  
SELECT CEIL((DD + 7 + SUN- DECODE( YO, 1, 7, YO)) / 7) as WC
  
FROM (
        
SELECT SUBSTR(WORKDT, -2, 2)                                                                                AS DD
             ,
DECODE(SUBSTR(WORKDT, -2, 2), '01', 0, DECODE(TO_CHAR(TO_DATE(WORKDT, 'yyyymmdd'), 'D'), 1, -1, 1))  AS SUN
             , T
O_CHAR(TO_DATE(WORKDT, 'yyyymmdd'), 'D')                                                            AS YO
        
FROM   (SELECT TO_CHAR(ADD_MONTHS('201012
' || '01', 1) - 1, 'YYYYMMDD') WORKDT
                
FROM DUAL, (SELECT to_char(rownum, '00') rn FROM dual connect by level <= 12)
                )
       ) ;

¢Ñ ³â°£ ÁÖÂ÷ ±¸Çϱâ

 


1. Á¤ÀÇ : ³â°£ ÁÖÂ÷ (1~52ÁÖ)¸¦ º¸¿©ÁØ´Ù.

2. ÇÑ ³¯Â¥¿¡ ´ëÇÑ ³â°£ ÁÖÂ÷ ±¸Çϱâ
  SELECT '20090115' as "³¯Â¥"
       , CEIL(  (TO_CHAR(TO_DATE('20090115','yyyymmdd'),'ddd')
              +
TO_CHAR(TO_DATE(SUBSTR('20090115',1,4)||'0101','yyyymmdd'),'d') - 1) / 7)   DDATE
   
FROM dual

3. 2010-12-10 ºÎÅÍ 2011-01-15 ±îÁö µÎ ³¯Â¥ »çÀÌÀÇ ³â°£ÁÖÂ÷¸¦ ±¸Çϱâ

   
SELECT TO_CHAR(TRUNC(TO_DATE('2010-12-10','YYYY-MM-DD') + ((LEVEL-1)*7), 'IW') + 5, 'YYYY')  YYYY
        ,
TO_CHAR(TRUNC(TO_DATE('2010-12-10','YYYY-MM-DD') + ((LEVEL-1)*7), 'IW'), 'IW') WW
        ,
TRUNC(TO_DATE('2010-12-10','YYYY-MM-DD') + ((LEVEL-1)*7), 'IW') - 1  BEGIN_DAY
        ,
TRUNC(TO_DATE('2010-12-10','YYYY-MM-DD') + ((LEVEL-1)*7), 'IW') + 5  END_DAY
    
FROM DUAL
   
CONNECT BY LEVEL <= (  (TRUNC(TO_DATE('2011-01-15','YYYY-MM-DD'), 'IW')+5) -- °Ë»öÁ¾·áÀÏ
                        - (
TRUNC(TO_DATE
('2010-12-10','YYYY-MM-DD'), 'IW')-1) -- °Ë»ö½ÃÀÛÀÏ
                        + 1
                       ) / 7 + 1 ;

¢Ñ ½Ã°£ ´õÇϱâ

 


WITH T(DT) AS
(
               
SELECT SYSDATE - (1/24) * 2    FROM DUAL  --ÇöÀç½Ã°¢¿¡¼­ 2½Ã°£ Àü
     
UNION ALL SELECT SYSDATE - (1/24) * 1    FROM DUAL  --ÇöÀç½Ã°¢¿¡¼­ 1½Ã°£ Àü
     
UNION ALL SELECT SYSDATE + (1/24) * 0.5  FROM DUAL  --ÇöÀç½Ã°¢¿¡¼­ 30ºÐ ÈÄ
     
UNION ALL SELECT SYSDATE + (1/24) * 1    FROM DUAL  --ÇöÀç½Ã°¢¿¡¼­ 1½Ã°£
     
UNION ALL SELECT SYSDATE + (1/24) * 2    FROM DUAL  --ÇöÀç½Ã°¢¿¡¼­ 2½Ã°£ ÈÄ
     
UNION ALL SELECT SYSDATE + (1/24) * 2.25 FROM DUAL  --ÇöÀç½Ã°¢¿¡¼­ 2½Ã°£ 20ºÐ ÈÄ
)
SELECT DT
  
FROM T ;
 

SELECT TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS'               ) C_TIME,   -- ÇöÀç½Ã°£
       
TO_CHAR(SYSDATE + 1/24,'YYYYMMDD HH24MISS'         ) TIME,     -- 1½Ã°£ ÈÄ
       
TO_CHAR(SYSDATE + 40/(24*60),'YYYYMMDD HH24MISS'   ) MIN,      -- 40ºÐ ÈÄ
       
TO_CHAR(SYSDATE + 10/(24*60*60),'YYYYMMDD HH24MISS') SEC       -- 10ÃÊ ÈÄ
  
FROM DUAL;


 


¢Ñ  
 

 

¢Ñ ROUND  
 

1. Á¤ÀÇ : ³¯Â¥¿¡ ´ëÇÑ ¹Ý¿Ã¸²Ã³¸®

¢Ñ TRUNC
 

1. Á¤ÀÇ : ³¯Â¥¿¡ ´ëÇÑ ¹ö¸²Ã³¸® 

¢Ñ