๑ `⌃´ ๑

f(x) 컴백하자..

날짜 관련 함수는 가짓수가 굉장히 많은데, 크게 날짜 표시/날짜 계산/날짜 형식 함수 순으로 정리해보겠다.

 

1. 날짜 표시

1) dayofweek(date) : 날짜를 한 주의 몇 번째 요일인지를 나타내는 숫자로 리턴한다.
   (1 = 일요일, 2 = 월요일, ... 7 = 토요일)

2) weekday(date) : 날짜를 한 주의 몇 번째 요일인지를 나타내는 숫자로 리턴한다. 
   (0 = 월요일, 1=화요일 ... 6 = 일요일)

3) dayofmonth(date) : 그 달의 몇 번째 날인지를 알려준다. 리턴 값은 1에서 31 사이이다.

4) dayofyear(date) : 한 해의 몇 번째 날인지를 알려준다. 리턴 값은 1에서 366 사이이다.

5) month(date) : 해당 날짜가 몇 월인지 알려준다. 리턴 값은 1에서 12 사이이다.

6) dayname(date) : 해당 날짜의 영어식 요일이름을 리턴한다.

7) monthname(date) : 해당 날짜의 영어식 월 이름을 리턴한다.

8) quarter(date) : 분기를 리턴한다 (1~ 4)

9) week(date) : 해당 날짜가 몇 번째 주일인지(0 ~ 52)를 리턴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-- 1) dayofweek(date)
select dayofweek('2021-06-30') as '요일'-- 4
 
-- 2) weekday(date)
select weekday('2021-06-30') as '요일'-- 2
 
-- 3) dayofmonth(date)
select dayofmonth('2021-06-29') as '일'-- 29
 
-- 4) dayofyear(date)
select dayofyear('2021-01-12');    -- 12
select dayofyear('2021-07-30'); -- 211
 
-- 5) month(date) 
select month('2021-02-03'); -- 2
 
-- 6) dayname(date)
select dayname('2021-12-25');
 
-- 7) monthname(date)
select monthname('2021-02-05'); -- Feburary
 
-- 8) quarter(date)
select quarter('2021-04-01') as '분기'-- 2
 
-- 9) week(date)
select week('1998-02-20');    -- 7
select week('1998-02-20',0); -- 일요일이 한 주의 시작요일(0:일요일, 1:월요일)
select week('1998-02-20',1);
cs

 

2. 날짜 계산

1) period_add(p,n) : yymm 또는 yyyymm 형식으로 주어진 달에 n개월을 더한다. 리턴 값은 yyyymm의 형식이다.

2) period_diff(p1,p2) : yymm 또는 yyyymm 형식으로 주어진 두 기간사이의 개월을 구한다.

3) date_add(date,interval expr type) or adddate(date,interval expr type)
   특정한 단위를 더한다. - seconds, minutes, hours, days, months, years

4) date_sub(date,interval expr type) or subdate(date,interval expr type)
   특정한 단위를 뺀다. - seconds, minutes, hours, days, months, years

5) to_days(date) : 주어진 날짜를 0000년-00월-00일 부터의 일수로 바꾼다.

6) from_days(n) : 주어진 일수로부터 날짜를 구한다(to_days 반대 개념)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-- 1) period_add(p,n)
select period_add(2109,36); -- 202409
 
-- 2) period_diff(p1,p2)
select period_diff(2104,202109); -- -5
select period_diff(202104,202109); -- -5
 
-- 3) date_add(date,interval expr type) or adddate(date,interval expr type)
select date_add("2021-12-31 23:59:59",interval 1 second); -- 1초 더하기
select date_add("2021-12-31 23:59:59",interval 30 day); -- 30일 더하기
select date_add("2021-12-31 23:59:59",interval 1 month); -- 1개월 더하기
select date_add("2021-12-31 23:59:59",interval "10:1" minute_second); -- 10분:1초 더하기
select date_add("2021-12-31 23:59:59",interval "1:30" hour_minute); -- 1시간:30분 더하기
 
-- 4) date_sub(date,interval expr type) or subdate(date,interval expr type)
select date_sub("2022-01-01 00:00:00",interval "1 1" day_hour);         -- 1일 1시간
select date_sub("2022-01-01 00:00:00",interval "1-1" year_month);         -- 1년-1개월
select date_sub("2022-01-01 00:00:00",interval "1:1:1" hour_second);    -- 1시간:1분:1초 빼기
select date_sub("2022-01-01 00:00:00",interval "1 1:1" day_minute);        -- 1일 1시간:1분 빼기
select date_sub("2022-01-01 00:00:00",interval "1 1:1:1" day_second);    -- 1일 1시간:1분:1초 빼기
 
-- 5) to_days(date) : 주어진 날짜를 0000년-00월-00일 부터의 일수로 바꾼다.
select to_days(210629); -- 0000년-00월-00일 부터 2021년-06월29일 까지의 일 수
select to_days('2021-06-29');  -- 738335
 
-- 6) from_days(n)
select from_days(738335);
cs

 

3. 날짜 형식

1) date_format(date,format) : format 의 정의에 따라 날자 혹은 시간을 출력한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-- %y : 2자리 년도 - %Y 는 4자리 년도
-- %m : 월(01~12) - %M 은 월 이름
-- %d 일(00~31)
select date_format('2021-07-01 13:54:00''%y년 %m월 %d일');
select date_format('2021-07-01 13:54:00''%M %Y');
 
-- %b : 짧은 월이름 (jan..dec)
-- %D : 영어식 접미사를 붙인 일(1st, 2nd, 3rd, etc.)
-- %a : 짧은 요일명(sun~sat)
select date_format('2021-07-01 13:54:00''%b %D (%a)');
-- %W : 요일명, %w : 일주일의 몇 번째 요일인가(0=sunday~6=saturday) 
select date_format('2021-07-01 13:54:00''%b %D (%W)');
 
-- %c : 월(1~12), %e : 일(0~31), %H : 24시 형식의 시간 (00~23), %i : 분, %s : 초(00~59)
select date_format('2021-07-01 13:54:00''%c-%e %H:%i:%s');
 
-- %h : 12시 형식의 시간 (01~12), %p : am 또는 pm 문자
select date_format('2021-07-01 13:54:00''%h:%i:%s %p');
 
-- %r : 시분초12시 형식 (hh:mm:ss [ap]m)
select date_format(NOW(), '%r');
 
-- %T : 시분초 24시 형식 (hh:mm:ss)
select date_format(NOW(), '%T');
 
-- %U : 한해의 몇 번째 주인가(0~52) 일요일이 시작일
-- %u : 한해의 몇 번째 주인가(0~52) 월요일이 시작일
select date_format(NOW(), '%U');
 
cs

 

2) time_format(time,format) : date_format()와 비슷한 역할을 하지만 단지 시,분,초 만을 나타낼 수 있다.

1
2
3
select date_format('2021-07-01 13:54:00''%h:%i:%s %p'
    union all
select time_format('2021-07-01 13:54:00''%h:%i:%s %p');
cs

 

3) curdate() : 오늘 날짜를 오늘 날짜를 'yyyy-mm-dd' 형식으로 리턴

1
2
select curdate(); -- yyyy-mm-dd
select curdate() + 0-- yyyymmdd
cs

 

4) curtime() : 'hh:mm:ss' 형식으로 현재시간을 나타낸다.

1
2
select curtime();        -- hh:mm:ss
select curtime() + 0;    -- hhmmss
cs

 

5) now() | sysdate() | current_timestamp() : 오늘 날자와 현재 시간을 'yyyy-mm-dd hh:mm:ss' 형식으로 반환

1
2
select now();
select now() + 0;
cs

 

6) unix_timestamp(date)

- 인수가 없이 사용될 경우 현재 시간의 유닉스 타임스탬프, 날짜형식의 date 가 인수로 주어진 경우에는 주어진 날짜의 유닉스 타임스탬프를 반환
- 유닉스 타임스탬프 : 그리니치 표준시로 1970 년 1월 1일 00:00:00 이 후의 시간경과를 초단위로 나타낸 것

1
2
select unix_timestamp();
select unix_timestamp(now());
cs

 

7) from_unixtime(unix_timestamp) : 주어진 유닉스 타임스탬프 값으로부터 'yyyy-mm-dd hh:mm:ss' 형식의 날짜로 반환

1
2
select from_unixtime(1625031063);
select from_unixtime(1625031063+ 0;
cs

 

8) from_unixtime(unix_timestamp,format) : 주어진 유닉스 타임스탬프 값을 주어진 날짜 형식에 맞게 바꿔서 보여준다.

1
select from_unixtime(unix_timestamp(),'%Y-%m-%d %h:%i:%s');
cs

 

9) sec_to_time(seconds) : 주어진 초를 'hh:mm:ss' 형식으로 반환

1
2
select sec_to_time(2378);
select sec_to_time(2378+ 0;
cs

 

10) time_to_sec(time) : 주어진 시간을 초 단위로 바꿔준다.

1
select time_to_sec('22:23:00');
cs

 

'Database' 카테고리의 다른 글

함수(1)  (0) 2022.05.02
Join(조인)  (0) 2022.04.28
집합(Union)  (0) 2022.04.28
서브 쿼리(Sub Query)  (6) 2022.04.27
참조제약 조건과 연계 참조 무결성 제약조건  (0) 2022.04.26
🎵 Playlist
loading...
00:00 / 00:00