sysdate
: 현재 시스템의 시각을 반환
: Calendar.getInstance()
: date sysdate
날짜 연산
1. 시각 - 시각 = 시간
2. 시간 + 시간 = 시각
3. 시각 - 시간 = 시각
📌 시각은 11시 40분 (한 시점을 의미)
📌 시간은 40분 (시각과 시각 사이의 양을 의미)
1. 시각 - 시각 = 시간(일)
-- 현재 - 입사일
select
name,
to_char(ibsadate, 'yyyy-mm-dd') as 입사일,
round(sysdate - ibsadate) as 근무일수, --5605일 지남
round((sysdate - ibsadate) * 24) as 근무시수,
round((sysdate - ibsadate) * 24 * 60) as 근무분수,
round((sysdate - ibsadate) * 24 * 60 * 60) as 근무초수,
round((sysdate - ibsadate) / 365) as 근무년수
from tblInsa;
2. 시간 + 시간 = 시각
3. 시각 - 시간 = 시각
💡 그저 +, - 사용하면 되기 때문에 편함!!
select
sysdate,
sysdate + 100 as "100일 뒤",
sysdate - 100 as "100일 전",
to_char(sysdate + (3/24), 'hh24:mi:ss') as "3시간 후",
to_char(sysdate + (3/24/60), 'hh24:mi') as "30분 후"
from dual;
months_between()
- 시각 - 시각 = 시간(월)
- number months_between(date,date) -- 몇개월 차이가 나는 지 돌려줌
select
name,
round(sysdate - ibsadate) as 근무일수,
round((sysdate - ibsadate) / 365) as 근무일수, --1년이 365일 아닌 날도 있기 때문에 부정확
round(months_between(sysdate, ibsadate)) as 근무월수, -- 184개월
round(months_between(sysdate, ibsadate)/12) as 근무년수 -- 정확
from tblInsa;
add_months()
- 시각 + 시간(월) = 시각
- 시각 - 시간(월) = 시각
- date add_months(date, 시간)
select
sysdate,
add_months(sysdate ,3), -- 24/05/15 3개월 후
add_months(sysdate ,-2), -- 23/12/15 2개월 전
add_months(sysdate ,3*12) -- 27/02/15 3년 뒤
from dual;
📌 시각 - 시각 ?? / 시각 +/- 시간 ??
시각 - 시각
1. 일, 시, 분, 초 > 연산자
2. 월, 년 > months_between()
시각 +/- 시간
1. 일, 시, 분, 초 > 연산자
2. 월, 년 > add_months()
last_day(날짜)
- 해당년월의 마지막일?
select last_day(sysdate) from dual;