oracle 중 todate 상세 용법 예시(oracle 날짜 형식 변환)

TO_DATE 형식(시간:2007-11-02 13:45:25 을 예 로 들 면)
1.날짜 와 문자 변환 함수 사용법(todate,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //  
select to_char(sysdate,'yyyy')  as nowYear   from dual;   //  
select to_char(sysdate,'mm')    as nowMonth  from dual;   //  
select to_char(sysdate,'dd')    as nowDay    from dual;   //  
select to_char(sysdate,'hh24')  as nowHour   from dual;   //  
select to_char(sysdate,'mi')    as nowMinute from dual;   //  
select to_char(sysdate,'ss')    as nowSecond from dual;   //
2.문자열 과 시간 이 서로 바뀐다

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual
select to_char( to_date(222,'J'),'Jsp') from dual // Two Hundred Twenty-Two   
3.제발 어느 날 은 무슨 요일

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;     //     
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day',
'NLS_DATE_LANGUAGE = American') from dual;   // monday  
//     
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';    
//     
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
4.이틀 간 의 일수

select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5.시간 은 null 의 용법

select id, active_date from table1    
UNION    
select 1, TO_DATE(null) from dual;  // TO_DATE(null)
6.월 차

a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')    
// 12 31 12 12 1 12 。    
// , , to_char
7.날짜 형식 충돌 문제 입력 형식 은 설치 한 ORACLE 문자 집합 형식 을 봐 야 합 니 다.예 를 들 어 US7ASCII,date 형식의 유형 은'01-Jan-01'입 니 다

alter system set NLS_DATE_LANGUAGE = American    
alter session set NLS_DATE_LANGUAGE = American    
// to_date     
select to_char(to_date('2002-08-26','yyyy-mm-dd'),
   'day','NLS_DATE_LANGUAGE = American') from dual;    
// NLS_DATE_LANGUAGE, ,     
select * from nls_session_parameters    
select * from V$NLS_PARAMETERS   
8.특수 조건 일수 조회

select count(*)    
from ( select rownum-1 rnum    
   from all_objects    
   where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-    
   02-01','yyyy-mm-dd')+1   
  )    
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )    
    not in ( '1', '7' )    

// 2002-02-28 2002-02-01     
// DBMS_UTILITY.GET_TIME, ( 1/100 , )
9.월 찾기

select months_between(to_date('01-31-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;    
// :1    
select months_between(to_date('02-01-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;    
// :1.03225806451613
10. Next_day 의 용법
11.획득 시간 수

Next_day(date, day)    
Monday-Sunday, for format code DAY    
Mon-Sun, for format code DY    
1-7, for format code D   
12.년 월 일의 처리

//extract()
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer    
select sysdate ,to_char(sysdate,'hh') from dual;    

SYSDATE               TO_CHAR(SYSDATE,'HH')    
-------------------- ---------------------    
2003-10-13 19:35:21   07   

select sysdate ,to_char(sysdate,'hh24') from dual;    

SYSDATE               TO_CHAR(SYSDATE,'HH24')    
-------------------- -----------------------    
2003-10-13 19:35:21   19  
13.월 일 수 를 정 하지 않 고 처리 하 는 방법

SELECT
  older_date,
  newer_date,
  years,
  months,
  ABS (
    TRUNC (
      newer_date - ADD_MONTHS (older_date, years * 12 + months)
    )
  ) days
FROM
  (
    SELECT
      TRUNC (
        MONTHS_BETWEEN (newer_date, older_date) / 12
      ) YEARS,
      MOD (
        TRUNC (
          MONTHS_BETWEEN (newer_date, older_date)
        ),
        12
      ) MONTHS,
      newer_date,
      older_date
    FROM
      (
        SELECT
          hiredate older_date,
          ADD_MONTHS (hiredate, ROWNUM) + ROWNUM newer_date
        FROM
          emp
      )
  )  
14.올해 일 수 를 찾 아 라

select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual   
15.yyy 와 rrrrr 의 차이

select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual   
 //     
to_char( last_day( to_date('02'    | | :year,'mmyyyy') ), 'dd' )    
 // 28
16.시간 대별 처리

YYYY99  TO_C    
------- ----    
yyyy 99 0099   
rrrr 99 1999   
yyyy 01 0001   
rrrr 01 2001 
17.5 초 간격

select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,
sysdate   from dual;   
18.일년 의 며칠

Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,
TO_CHAR(sysdate,'SSSSS')   from dual   
//2002-11-1 9:55:00 35786    
//SSSSS 5    
19.계산 시간,분,초,밀리초

select TO_CHAR(SYSDATE,'DDD'),sysdate from dual  
//310  2002-11-6 10:03:51   
20.next_day 함수
21,round[가장 가 까 운 날짜 까지 반올림](day:가장 가 까 운 일요일 까지 반올림)

SELECT
   Days,
   A,
   TRUNC (A * 24) Hours,
   TRUNC (A * 24 * 60 - 60 * TRUNC(A * 24)) Minutes,
   TRUNC (
     A * 24 * 60 * 60 - 60 * TRUNC (A * 24 * 60)
   ) Seconds,
   TRUNC (
     A * 24 * 60 * 60 * 100 - 100 * TRUNC (A * 24 * 60 * 60)
   ) mSeconds
 FROM
   (
     SELECT
       TRUNC (SYSDATE) Days,
       SYSDATE - TRUNC (SYSDATE) A
     FROM
       dual
   ) SELECT
     *
   FROM
     tabname
   ORDER BY
     DECODE (MODE, 'FIFO', 1 ,- 1) * TO_CHAR (rq, 'yyyymmddhh24miss')

//   floor((date2-date1) /365)     
//  floor((date2-date1, 365) /30)     
//  d(mod(date2-date1, 365), 30) .
22,trunc[가장 가 까 운 날짜 로 절단,단 위 는 일],날짜 유형 을 되 돌려 줍 니 다.

// ,day 1-7 - ,1
next_day(sysdate,6) 。 。    
// 1  2  3  4  5  6  7    
//   
select (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from dual
// ss
23,반환 날짜 목록 에서 가장 늦 은 날짜

select sysdate S1,
round(sysdate) S2 ,
round(sysdate,'year') YEAR,
round(sysdate,'month') MONTH ,
round(sysdate,'day') DAY from dual
24.시간 차 를 계산한다

select sysdate S1,                   
  trunc(sysdate) S2,                 // ,
  trunc(sysdate,'year') YEAR,        // 1 1 ,
  trunc(sysdate,'month') MONTH ,     // 1 ,
  trunc(sysdate,'day') DAY           // ,
from dual
25.업데이트 시간

select greatest('01-1 -04','04-1 -04','10-2 -04') from dual
26.달 찾기 첫날,마지막 날

:oracle , ,
 select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
 'yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual        // -
 select ceil(moths_between(sysdate-to_date('2007-11-02 15:55:03',
 'yyyy-mm-dd hh24:mi:ss'))) as spanMonths from dual           // -
 select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
 'yyyy-mm-dd hh24:mi:ss'))) as spanDays from dual             // -
 select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
 'yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual         // -
 select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
 'yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual    // -
 select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
 'yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual // -

좋은 웹페이지 즐겨찾기