λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

ν”„λ‘œκ·Έλž˜λ° 곡뢀/Oracle

[ex11~12] λ‚ μ§œ μ‹œκ°„ ν•¨μˆ˜(date time function), ν˜•λ³€ν™˜ ν•¨μˆ˜(casting function)

ex11_date_time_function

λ‚ μ§œ μ‹œκ°„ ν•¨μˆ˜


    1. sysdate
    - ν˜„μž¬ μ‹œμŠ€ν…œμ˜ μ‹œκ°μ„ λ°˜ν™˜
    - Calendar. getInstance()
    - date sysdate

-- RR/MM/DD
-- YYYY-MM-DD HH24:MI:SS
select sysdate from dual; -- 23/03/16 > 2023-03-16 11:49:57

 

λ‚ μ§œ μ—°μ‚°

 

1. μ‹œκ° - μ‹œκ° = μ‹œκ°„(일)

select
    name,
    ibsadate,
    round(sysdate - ibsadate) as "근무일수",
    round((sysdate - ibsadate) / 365) as "κ·Όλ¬΄λ…„μˆ˜", --μ‚¬μš©κΈˆμ§€(μ •ν™•X)
    round((sysdate - ibsadate) * 24) as "κ·Όλ¬΄μ‹œμˆ˜",
    round((sysdate - ibsadate) * 24 * 60) as "κ·Όλ¬΄λΆ„μˆ˜",
    round((sysdate - ibsadate) * 24 * 60 * 60) as "근무초수"
from tblInsa;

select
    title,
    adddate,
    completedate,
    round((completedate - adddate) * 24, 1) as "μ‹€ν–‰ν•˜κΈ°κΉŒμ§€κ±Έλ¦°μ‹œκ°„"
from tblTodo
    --where round((completedate - adddate) * 24, 1) <= 1;
    order by round((completedate - adddate) * 24, 1) desc;

 

2. μ‹œκ° + μ‹œκ°„(일) = μ‹œκ°
3. μ‹œκ° - μ‹œκ°„(일) = μ‹œκ°

select
    sysdate,
    sysdate + 100 as "100일뒀",
    sysdate - 100 as "100일전",
    sysdate + (3 / 24) as "3μ‹œκ°„ν›„",
    sysdate - (5 / 24) as "5μ‹œκ°„μ „",
    sysdate + (30 / 60 / 24) as "30λΆ„λ’€"
from dual;

 

   μ‹œκ° - μ‹œκ° = μ‹œκ°„(일)
    months_between()
    - number months_between(date, date)
    - μ‹œκ° - μ‹œκ° = μ‹œκ°„(μ›”)
    
    add_months()
    - number add_months(date, μ‹œκ°„)
    - μ‹œκ° + μ‹œκ°„(μ›”) = μ‹œκ°

select
    name,
    round(sysdate - ibsadate) as "근무일수",
    round((sysdate - ibsadate) / 365) as "κ·Όλ¬΄λ…„μˆ˜", --μ‹ λ’°X
    round(months_between(sysdate, ibsadate)) as "κ·Όλ¬΄μ›”μˆ˜", --μ‹ λ’°O
    round(months_between(sysdate, ibsadate) / 12) as "κ·Όλ¬΄λ…„μˆ˜" --μ‹ λ’°O
from tblInsa;

select 
    sysdate,
    sysdate + 10, --10일 λ’€
    sysdate + 30, --ν•œλ‹¬ λ’€?(μ‹ λ’°X) 23/04/15 
    add_months(sysdate, 1), --ν•œλ‹¬ λ’€(μ‹ λ’°O) 23/04/16
    add_months(sysdate, -3), --3κ°œμ›” μ „
    add_months(sysdate, 3 * 12) --3λ…„ λ’€
from dual;

 

    μ‹œκ° - μ‹œκ°
    1. μΌ, μ‹œ, λΆ„, μ΄ˆ > μ—°μ‚°μž(-)
    2. μ›”, λ…„ > months_between()
    
    μ‹œκ° +- μ‹œκ°„
    2. μΌ, μ‹œ, λΆ„, μ΄ˆ > μ—°μ‚°μž(+,-)
    2. μ›”, λ…„ > add_months()

 


ex12_casting_function

 

ν˜•λ³€ν™˜ ν•¨μˆ˜
    - (int)num
    
    1. to_char(숫자)      : μˆ«μž > λ¬Έμž
    2. to_char(λ‚ μ§œ)      : λ‚ μ§œ > λ¬Έμž ***********
    3. to_number(문자)    : λ¬Έμž > μˆ«μž
    4. to_date(문자)      : λ¬Έμž > λ‚ μ§œ *****

 

*** SQL은 μœ μ—°ν•œ μ–Έμ–΄ > λ¬Έλ²•을 μ λ‹Ήνžˆ μ€€μˆ˜ > μžλ£Œν˜• > μ•”μ‹œμ  ν˜•λ³€ν™˜ μž¦μŒ


    1. to_char(숫자, ν˜•μ‹λ¬Έμžμ—΄)
    
    ν˜•μ‹λ¬Έμžμ—΄ κ΅¬μ„±μš”μ†Œ
    a. 9: μˆ«μž 1개λ₯Ό λ¬Έμž 1개둜 λ°”κΎΈλŠ” μ—­ν• . λΉˆμžλ¦¬λ₯Ό μŠ€νŽ˜μ΄μŠ€λ‘œ μΉ˜ν™˜ > %5d
    b. 0: μˆ«μž 1개λ₯Ό λ¬Έμž 1개둜 λ°”κΎΈλŠ” μ—­ν• . λΉˆμžλ¦¬λ₯Ό 0으둜 μΉ˜ν™˜     > %05d
    c. $: ν†΅ν™” κΈ°ν˜Έ ν‘œν˜„
    d. L: ν†΅ν™” κΈ°ν˜Έ ν‘œν˜„
    e. .: μ†Œμˆ«μ 
    f. ,: μ²œλ‹¨μœ„

 

select

    weight,              --μš°μΈ‘μ •λ ¬(숫자)
    to_char(weight),     --μ’ŒμΈ‘μ •λ ¬(문자)
    
    length(weight),       --length() λ¬Έμžμ—΄ν•¨μˆ˜ > weight 숫자 > μ•”μ‹œμ  ν˜•λ³€ν™˜
    length(to_char(weight))
    
from tblComedian;

select
    weight,
    '@' || to_char(-weight) || '@', -- @-64@
    '@' || to_char(-weight, '99999') || '@',   -- @   -64@
    '@' || to_char(-weight, '00000') || '@'    -- @-00064@
from tblComedian;


select
    100,
    --to_char(100, '999λ‹¬λŸ¬')
    to_char(100, '$999'),
    to_char(100, 'L999'),    --지역톡화(원화)
    to_char(100, '999') || 'λ‹¬λŸ¬',
    to_char(100, '999') || '원'
from dual;


select
    1234567.89,
    to_char(1234567.89, '9,999,999.9') --%,d > 1,234,567.9
from dual;

2. to_char(λ‚ μ§œ)
    - λ‚ μ§œ > λ¬Έμž
    - char to _char(컬럼, ν˜•μ‹λ¬Έμžμ—΄)
    
    ν˜•μ‹λ¬Έμžμ—΄ κ΅¬μ„±μš”μ†Œ
    a. yyyy
    b. yy
    c. month
    d. mon
    e. mm
    f. day
    g. dy
    h. ddd
    i. dd
    j. d
    k. hh
    l. hh24
    m. mi
    n. ss
    o. am(pm)

 

select sysdate from dual;
select to_char(sysdate) from dual;
select to_char(sysdate, 'yyyy') from dual;  --λ…„(4자리) *****
select to_char(sysdate, 'yy') from dual;    --λ…„(2자리)
select to_char(sysdate, 'month') from dual; --μ›”(ν’€λ„€μž„ : 3μ›”)
select to_char(sysdate, 'mon') from dual;   --μ›”(μ•½μ–΄.. μ˜μ–΄μΌλ•Œ dec)
select to_char(sysdate, 'mm') from dual;    --μ›”(2자리) *****
select to_char(sysdate, 'day') from dual;   --μš”μΌ(ν’€λ„€μž„ : λͺ©μš”일)
select to_char(sysdate, 'dy') from dual;    --μš”μΌ(μ•½μ–΄ : λͺ©)
select to_char(sysdate, 'ddd') from dual;   --일(μ˜¬ν•΄λ“€μ–΄ 며칠인지)
select to_char(sysdate, 'dd') from dual;    --일(μ΄λ²ˆλ‹¬μ˜ λ©°μΉ ) *****
select to_char(sysdate, 'd') from dual;     --일(이번주의 λ©°μΉ ) 일(1)~ν† (7)
select to_char(sysdate, 'hh') from dual;    --μ‹œ(12μ‹œκ°„)
select to_char(sysdate, 'hh24') from dual;  --μ‹œ(24μ‹œκ°„) *****
select to_char(sysdate, 'mi') from dual;    --λΆ„ *****
select to_char(sysdate, 'ss') from dual;    --초 *****
select to_char(sysdate, 'am') from dual;    --μ˜€μ „/μ˜€ν›„
select to_char(sysdate, 'pm') from dual;    --μ˜€μ „/μ˜€ν›„

 

*μ•”κΈ°*

select
    sysdate,
    to_char(sysdate, 'yyyy-mm-dd'), --2023-03-16
    to_char(sysdate, 'hh24:mi:ss'),  --14:45:42
    to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), --2023-03-16 14:46:15
    to_char(sysdate, 'day am hh:mi:ss') --λͺ©μš”일 μ˜€ν›„ 02:46:48
from dual;

 

λ‚ μ§œ μƒμˆ˜κ°€ μ—†λ‹€

-- λ‚ μ§œ μƒμˆ˜κ°€ μ—†λ‹€.
-- μž…μ‚¬λ‚ μ§œ > 2000λ…„ 이후
select * from tblInsa
    where ibsadate >= '2000-01-01'; --'2000-01-01'  > λ¬Έμžμ—΄
    
-- μž…μ‚¬λ‚ μ§œ > 2000년에 
select * from tblInsa
    where ibsadate >= '2000-01-01' and ibsadate <= '2000-12-31'; --μ˜€λ‹΅ 
    
-- λ‚ μ§œ μƒμˆ˜ > μžλ™μœΌλ‘œ 00:00:00 > μžμ •μœΌλ‘œ μ„ΈνŒ…λœλ‹€.
    
select * from tblInsa
    where ibsadate >= '2000-01-01 00:00:00' and ibsadate <= '2000-12-31 23:59:59'; --μ—λŸ¬. μ‹œλΆ„μ΄ˆ 뢙이면 μžλ™ν˜•λ³€ν™˜ μ•ˆμ‹œμΌœμ€Œ

select * from tblInsa
    where to_char(ibsadate, 'yyyy') = '2000'; --μ•ˆμ •μ 

3. to_number(문자)

select
    123,
    '123',
    to_number('123')
from dual;

select
    123 * 2,
    to_number('123') * 2,
    '123' * 2 -- ν˜•λ³€ν™˜ μ•ˆν•΄λ„ 계산됨(μ•”μ‹œμ  ν˜•λ³€ν™˜)
from dual;

4. to_date()
- 문자 > λ‚ μ§œ
- date to_date(컬럼, ν˜•μ‹λ¬Έμžμ—΄)

select
    sysdate,                --23/03/16
    '2023-03-16',           --2023-03-16 > λ¬Έμžμ—΄!!!, λ‚ μ§œ(X) > μ—¬κΈ°μ„  ν˜•λ³€ν™˜ λ°œμƒX
    to_date('2023-03-16'),  --23/03/16 
    to_date('2023-03-16', 'yyyy-mm-dd'), --정석
    to_date('20230316'), --23/03/16
    to_date('20230316', 'yyyymmdd'), --정석
    to_date('2023/03/16'),
    to_date('2023/03/16', 'yyyy/mm/dd'), --정석
    
    --to_date('2023-03-16 15:28:25'), --μ—λŸ¬
    to_date('2023-03-16 15:28:25', 'yyyy-mm-dd hh24:mi:ss') --********* 
from dual;


-- 2000년에 μž…μ‚¬ν•œ 직원
select * from tblInsa
    where ibsadate >= '2000-01-01' and ibsadate <= '2000-12-31'; --X

select * from tblInsa
    where ibsadate >= to_date('2000-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') 
    and ibsadate <= to_date('2000-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss');