[오라클] 날짜함수, 숫자함수
본문 바로가기
IT. 컴퓨터

[오라클] 날짜함수, 숫자함수

by 솔기잇 2020. 6. 13.

<<우편번호 쿼리문 구성>> 

SELECT *

  FROM 우편테이블

 WHERE 동이름 LIKE '%신흥%' –테이블생성

 

 

 

<테이블 생성>

CREATE TABLE TBL_WATCH

       (   NO     NUMBER(1) ,

          NAME   VARCHAR2(10) ,

          BIGO   VARCHAR2(500)

       );

< 넣기>

INSERT INTO TBL_WATCH

VALUES ( 1, '금시계', '순금 99.99% 고급 금시계'  ) ; 

 

INSERT  INTO TBL_WATCH

VALUES (2, '은시계',  '고객만족도 99.99 획득한 고급 은시계' ) ;

----------------------------------------------------------------------------- 

 

<<BIGO 란에 99.99% 라는 글자가 들어 있는 행만 추출하세요.  >>

--3가지 다 같은 값

SELECT *

  FROM TBL_WATCH

 WHERE BIGO LIKE '%%99.992%%'ESCAPE'2'; -- 2 글자 다음 와일드(%) 를 소멸시킨다. 

 

SELECT *

  FROM TBL_WATCH

 WHERE BIGO LIKE '%%99.99A%%'ESCAPE'A'; 

 

SELECT *

  FROM TBL_WATCH

 WHERE BIGO LIKE '%%99.99\%%'ESCAPE'\'; -- 대부분 특수기호 \를 많이 쓴다.

 

-----------------------------------------------------------------------------

 

 

-- ** 숫자 함수 ** -- 

 

SELECT 5+2,

       5-2,

       5*2,

       5/2

  FROM DUAL;

--> 7     3           10         2.5 

 

--MOD

SELECT MOD(5,2) -- 5/2를 나누었을 때의 나머지 1

  FROM DUAL;

--> 1 

 

-- ROUND

SELECT 58.647,

       ROUND(58.647), -- 반올림하고 없에 주는 것

       ROUND(58.647,0),

       ROUND(58.647,1),

       ROUND(58.647,2),

       ROUND(58.647,-1),

       ROUND(58.647,-2)

  FROM DUAL;

--> 58.647        59         59         58.6      58.65   60         100 

 

-- TRUNC

SELECT 58.647,

       TRUNC(58.647), -- 절삭

       TRUNC(58.647,0),

       TRUNC(58.647,1),

       TRUNC(58.647,2),

       TRUNC(58.647,-1),

       TRUNC(58.647,-2)

  FROM DUAL;

--> 58.647        58         58         58.6      58.64   50         0 

 

SELECT 5/2,

       TRUNC(5/2),

       MOD(5,2)

  FROM DUAL;

--> 2.5 2          1 

 

-- SIGN

SELECT SIGN(5-2),

       SIGN(5-5),

       SIGN(2-5) --양수는 1, 음수는 0

  FROM DUAL;

--> 1     0           -1 

 

SELECT LOG(10, 100)

  FROM DUAL;

--> 2 

 

SELECT POWER(3,2)

  FROM DUAL;

--> 9 

 

SELECT SQRT(9),

       SQRT(2),

       SQRT(3)

  FROM DUAL;

--> 3     1.41421...         1.73205... 

 

SELECT SIN(90),

       COS(90),

       TAN(90),

       ASIN(0.05),

       ACOS(0.05),

       ATAN(0.05)

  FROM DUAL;

--> 0.893996   -0.448073        -1.9952004      0.05002085

--          1.520775          0.049958395

 

 

--*** 날짜 함수 ** -- 

 

SELECT SYSDATE,

       CURRENT_DATE,

       LOCALTIMESTAMP,

       CURRENT_TIMESTAMP

FROM DUAL;

--2010-11-25 오전 9:15:19 2010-11-25 오전 9:15:20        

--2010-11-25 오전 9:15:20      2010-11-25 오전 9:15:19

 

 

<명령프론프트에서>

 

SQL> 

SELECT SYSDATE, CURRENT_DATE  FROM DUAL;

SYSDATE   CURRENT_ -------- --------

10/11/24   10/11/24

 

SQL> 

SELECT LOCALTIMESTAMP, CURRENT_TIMESTAMP

2  FROM DUAL;

LOCALTIMESTAMP ----------------------------------------------

CURRENT_TIMESTAMP ----------------------------------------------

 

===============================================================

 

 

 

--SYSDATE

SELECT LAST_DAY(SYSDATE),

       NEXT_DAY(SYSDATE,''), --돌아오는 금요일

       NEXT_DAY(SYSDATE,'') --돌아오는 수요일

  FROM DUAL;

--> 2010-11-30 오후 12:07:40,         2010-11-26 오후 12:07:40,

--  2010-12-01 오후 12:07:40 

 

 

 

SELECT SYSDATE + 1, SYSDATE -1 --하루 전과 후

FROM DUAL;

--> 2010-11-25 오후 12:06:53,         2010-11-23 오후 12:06:53 

 

SELECT ADD_MONTHS(SYSDATE,2),

       ADD_MONTHS(SYSDATE,-2)

  FROM DUAL;

--> 2011-01-24 오후 12:08:53,         2010-09-24 오후 12:08:53 

 

SELECT (SYSDATE +3) - SYSDATE

  FROM DUAL;

--> 3 (일수) 

 

SELECT SYSDATE - 80,

       SYSDATE -- 일수

  FROM DUAL;

--> 2010-09-05 오후 12:10:55,         2010-11-24 오후 12:10:55 

 

SELECT MONTHS_BETWEEN(SYSDATE, SYSDATE - 80) -- 개월차이

  FROM DUAL;

--> 2.61(개월)

 

 

“93784” 는 하루의 초값

 

SELECT    TRUNC(TRUNC(TRUNC(93784 / 60) /60 ) /24) AS "",

          TRUNC(TRUNC(93784 / 60) /60 ) AS "시간",

          MOD(TRUNC(93784 / 60),60) AS "",

          MOD(93784,60) AS ""

FROM DUAL;

 

밑에다가 붙이기

 

SELECT    SYSDATE AS "현재시각",

          TO_DATE('2011-04-12 18:00:00'

                     , 'YYYY-MM-DD HH24:MI:SS') AS "수료일자",

 

          TRUNC(TRUNC(TRUNC(TRUNC(

            ( TO_DATE('2011-04-12 18:00:00',

                      'YYYY-MM-DD-HH24:MI:SS')

                 - SYSDATE) * (24*60*60)

            ) / 60) /60 ) /24) AS "",

          TRUNC(TRUNC(TRUNC(

            ( TO_DATE('2011-04-12 18:00:00',

                      'YYYY-MM-DD-HH24:MI:SS')

                 - SYSDATE) * (24*60*60)

            ) / 60) /60 ) AS "시간",

          MOD(TRUNC(TRUNC(

            ( TO_DATE('2011-04-12 18:00:00',

                      'YYYY-MM-DD-HH24:MI:SS')

                 - SYSDATE) * (24*60*60)

            ) / 60),60) AS "",

          MOD(TRUNC(

            ( TO_DATE('2011-04-12 18:00:00',

                      'YYYY-MM-DD-HH24:MI:SS')

                 - SYSDATE) * (24*60*60)

            ),60) AS " 남았습니다."          

FROM DUAL;

--> 수요일을 구할 때에는 먼저 하루의 초를 먼저 구하고

--> 거꾸로 올라가서 구하면 된다.

 

 

SELECT 5.7,

       -5.7

        FLOOR(5.7), FLOOR(-5.7),  --5.7보다 작은 최소의 정수

        TRUNC(5.7),CEIL(5.7),       --5.7보다 큰 최소의 정수

        DEIL(5.7),CEIL(5.7)

FROM DUAL;

 --> 수요일까지의 일수를 구할 때는 TRUNC 을 사용해야지

 --  FLOOR 를 쓰면 안된다. 왜냐면 -5.7 일 경우 값이 -6 이 나오게 된다. 


close