#33 [ORACLE] MOD,REMAINDER,DATE ํ•จ์ˆ˜,๋ฌธ์ž์—ด ์—ฐ๊ฒฐ, SUBSTR, ์ง‘ํ•ฉ์—ฐ์‚ฐ์ž

    ๐Ÿ“Œ MOD (NUMBER1,NUMBER2)

    : ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์„ ํ•œ ํ›„์— ๊ตฌํ•œ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

    (์ˆซ์ž๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๊ฑฐ๋‚˜, ์ˆซ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํƒ€์ž… ๊ฐ€๋Šฅ)

    ๐Ÿ‘‰ Java์—์„œ์˜ % ์—ฐ์‚ฐ์ž์™€ ๋™์ผํ•œ ์—ญํ• 

     

    ๐Ÿ’กMOD() ์‚ฌ์šฉ๋ฒ•

    SELECT MOD(5,2) FROM DUAL
    --> ๊ฒฐ๊ณผ๊ฐ’: 1

    ๐Ÿ“Œ REMAINDER (NUMBER1, NUMBER2)

    : ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์„ ํ•œ ํ›„์— ๊ตฌํ•œ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ 

    (์ˆซ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ฐ€๋Šฅ)

    ๐Ÿ’ก REMAINDER() ์‚ฌ์šฉ๋ฒ•

    SELECT REMAINDER(5,2) FOR DUAL
    --> ๊ฒฐ๊ณผ๊ฐ’ : 1

     

    ๐Ÿ’ก MOD() ์™€ REMAINDER()์˜ ์ฐจ์ด

    โœ… MOD()๋Š” ๋‚˜๋จธ์ง€ ๊ณ„์‚ฐ์‹œ FLOORํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ

    MOD(NUM2,NUM1)

    NUM2 – NUM1 * FLOOR (NUM2 / NUM1) 

    โœ… REMAINDER()์€ ๋‚˜๋จธ์ง€ ๊ณ„์‚ฐ์‹œ ROUND ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ

    REMAINDER(NUM2,NUM1)

    NUM2 - (NUM1 * ROUND (NUM2 / NUM1))

    ๐Ÿ‘‰ ROUND : ๋ฐ˜์˜ฌ๋ฆผ, FLOOR : ๋‚ด๋ฆผ

     

    โœ… ์Œ์ˆ˜ ๊ณ„์‚ฐ ์‹œ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Œ

     


    ๐Ÿ“Œ ๋‚ ์งœ ํ•จ์ˆ˜

    ๐Ÿ’กSYSDATE

    โœ… ์˜ค๋Š˜ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ

    SELECT SYSDATE FROM DUAL;
    --> ํ˜„์žฌ ๋‚ ์งœ, ์‹œ๋ถ„์ดˆ๋ฅผ ์ถœ๋ ฅ (YYYY-MM-DD HH24:MI:SS)

    โœ… ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ

    SELECT TO_CHAR(SYSDATE,'YYYY'), --> 2022
     TO_CHAR(SYSDATE,'MM'), --> 11
     TO_CHAR(SYSDATE,'DD'), --> 17
     TO_CHAR(SYSDATE,'HH24'), --> 22
     TO_CHAR(SYSDATE,'MI'), --> 16
     TO_CHAR(SYSDATE,'SS'), --> 29
     TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS') --> 20221117221629
     FROM DUAL;

    โœ… ์›ํ•˜๋Š” ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ

    SYSDATE์— ์ •์ˆ˜ ๊ฐ’์„ ์ฆ๊ฐํ•˜๋ฉด ์ผ ๋‹จ์œ„๋กœ ์—ฐ์‚ฐํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    SELECT SYSDATE-1 FROM DUAL; --> ์–ด์ œ
    SELECT SYSDATE+1 FROM DUAL; --> ๋‚ด์ผ

     

    ๐Ÿ“˜ NOTE
    ์‹œ / ๋ถ„ / ์ดˆ ๋‹จ์œ„๋กœ ์ฆ๊ฐ์‹œํ‚ค๊ณ  ์‹ถ์„ ๋•Œ๋Š” 24์‹œ๊ฐ„๊ณผ 60๋ถ„, 60์ดˆ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
    1์ผ = 24์‹œ๊ฐ„
    SYSDATE + (5/24) --> 5์‹œ๊ฐ„ ์ฆ๊ฐ€ (ํ•˜๋ฃจ๋ฅผ 24์‹œ๊ฐ„์œผ๋กœ ๋‚˜๋ˆˆ๊ฒƒ์˜ 5๋งŒํผ => 5์‹œ๊ฐ„)
    SYSDATE + 5/(24*60) --> 5๋ถ„ ์ฆ๊ฐ€
    SYSDATE + 5/(24*60*60) --> 5์ดˆ ์ฆ๊ฐ€

     

    ๐Ÿ’กADD_MONTHS (DATE, INTEGER)

    : ๋‚ ์งœ์— ํŠน์ • ๊ฐœ์›” ์ˆ˜๋ฅผ ๋”ํ•œ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

    ๐Ÿšจ ์˜ค๋Š˜ ๋‚ ์งœ๊ฐ€ 31์ผ์ธ๋ฐ ์ „๋‹ฌ์—๋Š” 31์ผ์ด ์—†์„ ๊ฒฝ์šฐ, ๊ทธ ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ์ผ์„ ๋ฆฌํ„ดํ•จ

    SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYYMMDD') FROM DUAL; --> ํ•œ๋‹ฌ์ „
    SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-12),'YYYYMMDD') FROM DUAL; --> ์ผ๋…„์ „
    SELECT TO_CHAR(ADD_MONTHS(SYSDATE,+1),'YYYYMMDD') FROM DUAL;  --> ํ•œ๋‹ฌํ›„
    SELECT TO_CHAR(ADD_MONTHS(SYSDATE,+12),'YYYYMMDD') FROM DUAL; --> ์ผ๋…„ํ›„

     

    ๐Ÿ’กMONTHS_BETWEEN (DATE1,DATE2)

    : ๋‚ ์งœ์™€ ๋‚ ์งœ ์‚ฌ์ด์˜ ๊ฐœ์›” ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

    ๐Ÿšจ DATE1๊ณผ DATE2๊ฐ€ ๊ฐ™์€ ๋‚ ์งœ์ด๊ฑฐ๋‚˜ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ์ธ ๊ฒฝ์šฐ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, 

    ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์†Œ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

    SELECT MONTHS_BETWEEN
    	(TO_DATE('1995-02-02','YYYY-MM-DD'),
    	(TO_DATE('1995-01-01','YYYY-MM-DD'))
    FROM DUAL;
    --> 1.03225806
    SELECT TRUNC(MONTHS_BETWEEN
    	(TO_DATE('1995-02-02','YYYY-MM-DD'),
    	(TO_DATE('1995-01-01','YYYY-MM-DD')))
    FROM DUAL;
    --> 1

     

    ๐Ÿ’กLAST_DAY (date)

    : ์ž…๋ ฅํ•œ ๋‚ ์งœ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

    SELECT LAST_DAY(TO_DATE('20221117','YYYYMMDD')) FROM DUAL;
    --> 2022-11-30 00:00:00

     

    ๐Ÿ’กNEXT_DAY(DATE,INT ๋˜๋Š” '์š”์ผ')

    : ๋Œ์•„์˜ค๋Š” ์š”์ผ์˜ ๋‚ ์งœ๋ฅผ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ํ•จ์ˆ˜

    DATE: ๊ธฐ์ค€์ด ๋˜๋Š” ๋‚ ์งœ

    INT :  ์ผ์š”์ผ : 1, ์›”์š”์ผ : 2, ํ™”์š”์ผ : 3, ์ˆ˜์š”์ผ : 4, ๋ชฉ์š”์ผ : 5, ๊ธˆ์š”์ผ : 6, ํ† ์š”์ผ : 7 

    '์š”์ผ' : '์›”์š”์ผ', 'ํ™”์š”์ผ', 'SUN','MON', ...

    SELECT TO_CHAR(NEXT_DAY(SYSDATE, 'FRIDAY'), 'YYYY-MM-DD') --> 2022-11-18
         , TO_CHAR(NEXT_DAY(SYSDATE, 6), 'YYYY-MM-DD') --> 2022-11-18
    FROM DUAL;

    ๐Ÿ“Œ ๋ฌธ์ž์—ด ํ•ฉ์น˜๊ธฐ

    ๐Ÿ’กCONCAT (๋ฌธ์ž์—ด1, ๋ฌธ์ž์—ด2)

    : ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ํ•จ์ˆ˜

    ๐Ÿ‘‰ ์ปฌ๋Ÿผ๋„ ๊ฐ€๋Šฅ, ์ž๋™ ํ˜•๋ณ€ํ™˜

    SELECT CONCAT('์•ˆ๋…•','ํ•˜์„ธ์š”') FROM DUAL; --> ์•ˆ๋…•ํ•˜์„ธ์š”

     

    ๐Ÿ’ก|| ์—ฐ์‚ฐ์ž

    : ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ์—ฐ์‚ฐ์ž

    -> ์งง๊ณ  ๊ฐ„๋‹จํ•˜๋ฉฐ CONCAT๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์„ ์ˆ˜ ์žˆ์Œ (์‹ค๋ฌด์—์„œ ๋” ์ž์ฃผ ์“ฐ์ด๋Š” ํŽธ)

    SELECT '์•ˆ๋…•'||'ํ•˜์„ธ์š”' FROM DUAL; --> ์•ˆ๋…•ํ•˜์„ธ์š”

     

    ๐Ÿ’กCONCAT()๊ณผ || ์˜ ์ฐจ์ด์ 

    1๏ธโƒฃCONCAT() ์€ ํ•จ์ˆ˜์ด๋ฉฐ, ||์€ ์—ฐ์‚ฐ์ž ์ด๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‹ค๋ฆ„

    ์—ฐ์‚ฐ์ž๊ฐ€ ํ•จ์ˆ˜๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๊ธฐ ๋•Œ๋ฌธ์— || ์—ฐ์‚ฐ์ž๊ฐ€ CONCATํ•จ์ˆ˜๋ณด๋‹ค ์ข€ ๋” ๋นจ๋ฆฌ ๋™์ž‘ํ•จ

    (์˜ค๋ผํด ๊ธฐ์ค€, ์†๋„๋Š” || ๊ฐ€ ๋” ๋น ๋ฅธ๋ฐ, ์„ฑ๋Šฅ์œผ๋กœ๋Š” CONCAT์ด ๋” ์ข‹์€ ํŽธ)

    2๏ธโƒฃ CONCAT() ์€ ์ž๋™์œผ๋กœ ํ˜•๋ณ€ํ™˜์„ ํ•ด์คŒ


    ๐Ÿ“Œ SUBSTR (๋ฌธ์ž์—ด,์‹œ์ž‘์œ„์น˜,๊ธธ์ด)

    : ๋ฌธ์ž ๋‹จ์œ„๋กœ ์‹œ์ž‘์œ„์น˜์™€ ์ž๋ฅผ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์ž๋ฆ„

    ๐Ÿšจ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ์–‘์ˆ˜๋ฉด ์ขŒ์ธก์—์„œ๋ถ€ํ„ฐ ์ธ๋ฑ์Šค ์‹œ์ž‘

    ๐Ÿšจ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ์Œ์ˆ˜๋ฉด ์šฐ์ธก์—์„œ๋ถ€ํ„ฐ ์ธ๋ฑ์Šค ์‹œ์ž‘

    SELECT SUBSTR('DATABASE',2) FROM DUAL --> ATABASE
    SELECT SUBSTR('DATABASE',2,4) FROM DUAL --> ATAB
    SELECT SUBSTR('DATABASE',-3) FROM DUAL --> ASE
    SELECT SUBSTR('DATABASE',-3,2) FROM DUAL --> BA

     


    ๐Ÿ“Œ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž

    : ์—ฌ๋Ÿฌ๊ฐœ์˜ SELECT ๊ฒฐ๊ณผ๋ฌผ์„ ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๋กœ ๋งŒ๋“œ๋Š” ์—ฐ์‚ฐ์ž

    ๐Ÿšจ ๊ฐ ์ฟผ๋ฆฌ๋ฌธ์˜ ์ปฌ๋Ÿผ ๊ฐœ์ˆ˜๊ฐ€ ๋งž์•„์•ผํ•˜๊ณ  ๋ฐ์ดํ„ฐํ˜•์ด ๋™์ผํ•ด์•ผํ•จ

    ์ง‘ํ•ฉ์—ฐ์‚ฐ์ž

     

    ๐Ÿ’กUNION

    : ํ•ฉ์ง‘ํ•ฉ (์ค‘๋ณต๊ฐ’ ์ œ์™ธ)

    SELECT ์ปฌ๋Ÿผ1 FROM ํ…Œ์ด๋ธ”1
    UNION
    SELECT ์ปฌ๋Ÿผ2 FROM ํ…Œ์ด๋ธ”2;

    ๐Ÿ’กUNION ALL

    : ํ•ฉ์ง‘ํ•ฉ (์ค‘๋ณต๊ฐ’ ํฌํ•จ)

    SELECT ์ปฌ๋Ÿผ1 FROM ํ…Œ์ด๋ธ”1
    UNION ALL
    SELECT ์ปฌ๋Ÿผ2 FROM ํ…Œ์ด๋ธ”2;

    ๐Ÿ’กINTERSECT

    : ๊ต์ง‘ํ•ฉ 

    SELECT ์ปฌ๋Ÿผ1 FROM ํ…Œ์ด๋ธ”1
    INTERSECT
    SELECT ์ปฌ๋Ÿผ2 FROM ํ…Œ์ด๋ธ”2;

    ๐Ÿ’กMINUS

    : ์ฐจ์ง‘ํ•ฉ 

    ๐Ÿšจ ์„ ํ–‰์ฟผ๋ฆฌ - ํ›„ํ–‰์ฟผ๋ฆฌ

    SELECT ์ปฌ๋Ÿผ1 FROM ํ…Œ์ด๋ธ”1
    MINUS
    SELECT ์ปฌ๋Ÿผ2 FROM ํ…Œ์ด๋ธ”2;
    ๋ฐ˜์‘ํ˜•

    'ORACLE' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    #35 [ORACLE] LIKE, ์™€์ผ๋“œ ๋ฌธ์ž  (2) 2022.11.21
    #34 [ORACLE] OUTER JOIN, NVL, NVL2, IN, COALESCE  (3) 2022.11.18
    #32 [ORACLE] ์ง‘๊ณ„ ํ•จ์ˆ˜, GROUP BY, DISTINCT, VIEW  (0) 2022.11.16
    #31 [ORACLE] Cascade  (1) 2022.11.15
    #30 [ORACLE] Inner Join, Alias  (0) 2022.11.14

    ๋Œ“๊ธ€