개발 수업/DB

[Oracle/SQL] SQL함수(날짜함수)

오늘 하루s 2023. 6. 9. 19:33
728x90
더보기

Day29-2. 230609

날짜함수

sysdate

현재일자와 시간을 DATE로 출력

1
2
select sysdate
from dual;
cs

 

1
2
select sysdate, to_char(sysdate,'YYYY-MM-DD HH24:MI:SS DAY')
from dual;
cs

to_char(sysdate,'YYYY-MM-DD HH24:MI:SS DAY') :

현재 날짜를 'YYYY-MM-DD HH24:MI:SS DAY'(2023-06-09 18:00:00 금요일)형태로 출력

 

 

LAST_DAY(date) , NEXT(date,char)

LAST_DAY(date) : date 날짜를 기준으로 해당 월의 마지막 일자를 반환

NEXT(date,char) : date를 char에 명시한 날짜로 다음 주 주중 일자 반환

 

1
2
3
4
5
select sysdate-1,sysdate, sysdate+1,
to_char(sysdate+(1/24),'YYYY-MM-DD HH24:MI'),
to_char(sysdate+((2/3)/24),'YYYY-MM-DD HH24:MI'),
to_char(sysdate+(40/(24*60)),'YYYY-MM-DD HH24:MI')
from dual;
cs

sysdate-1 : 하루 전날의 날짜 , sysdate+1 : 다음날 날짜

to_char(sysdate+(1/24),'YYYY-MM-DD HH24:MI') : 한시간 뒤의 시간

to_char(sysdate+((2/3)/24),'YYYY-MM-DD HH24:MI'),

to_char(sysdate+(40/(24*60)),'YYYY-MM-DD HH24:MI') : 40분 뒤 시간

 

 

ADD_MONTHS(date, integer)

date로 부터 integer만큼의 월을 더한 날짜 반환

1
2
3
4
select sysdate,
add_months(sysdate,-6),
add_months(sysdate,6)
from dual;
cs

 

 

MONTHS_BETWEEN(date1, date2)

두 날짜 사이의 개월 수 반환. date2가 date1보다 빠른 날짜.

1
2
3
select months_between('2023/12/31',sysdate),
months_between(add_months(sysdate,6),sysdate)
from dual;
cs

 

 

LAST_DAY(date) , NEXT(date,char)

LAST_DAY(date) : date 날짜를 기준으로 해당 월의 마지막 일자를 반환

NEXT(date,char) : date를 char에 명시한 날짜로 다음 주 주중 일자 반환

1
2
3
select last_day(sysdate),last_day('2023/02/01'),
next_day(sysdate,'토')
from dual;
cs

 

 

EXTRACT(포맷 from 날짜)

날짜에서 데이터 출력

1
2
3
4
select sysdate, extract(YEAR FROM sysdate),
extract(MONTH FROM sysdate),
extract(DAY FROM sysdate)
from dual
cs

실행 결과

1
2
3
4
select hiredate, extract(YEAR FROM hiredate),
extract(MONTH FROM hiredate),
extract(DAY FROM hiredate)
from EMP;
cs

 

1
2
3
4
--입사한 달의 근무일수(토,일 포함)
select ename, hiredate, to_char((last_day(hiredate)-hiredate)*120000,'999,999,999') as 첫달급여
from emp
order by hiredate desc;
cs
728x90