본문 바로가기

컴/데이터베이스

MySQL - 날짜 함수

출처 : https://jang8584.tistory.com/7

dayofweek(date), weekday(date)

날짜를 몇 번째 요일인지를 나타내는 숫자로 리턴
dayofweek : 일요일(1), 월요일(2), ..., 토요일(7)
weekday : 월요일(0), 화요일(1), ..., 일요일(6)

dayofmonth(date)

그 달의 몇 번째 날인지를 리턴 (일자 리턴)

dayofyear(date)

한 해의 몇 번째 날인지 리턴 (1~366)

ex) select dayofyear('2020-02-01');
-> 32

month(date)

해당 날짜가 몇 월인지 리턴

week(date)

해당 날짜가 몇 번째 주인지를 리턴 (0~52)

year(date)

년도를 리턴 (1000~9999)

dayname(date), monthname(date)

해당 날짜의 요일 이름, 월 이름을 영어로 리턴

quarter(date)

분기를 리턴 (1~4)

ex) select quarter('98-04-01');
-> 2

hour(time), minute(time), second(time)

시간(0~23), 분(0~59), 초(0~59)를 알려준다

period_add(p, n)

p(yymm 또는 yyyymm)에 n개월을 더하여 yyyymm 형식으로 리턴

period_diff(p1, p2)

yymm 또는 yyyymm 형식으로 주어진 두 기간 사이의 개월을 구한다

date_add(date, interval expr type), date_sub(date, interval expr type)

date_add는 adddate, date_sub는 subdate라고 해도 됨

expr은 가감하는 일수 또는 시간을 나타내는 표현식

  • type
    초 - second, seconds
    분 - minute, minutes
    시간 - hour, hours
    일 - day, days
    월 - month, months
    년 - year, years
    분:초 - minute_second, "minutes:seconds"
    시:분 - hour_minute, "hours:minutes"
    일 시 - day_hour, "days hours"
    년 월 - year_month, "years-months"
    시 분 - hour_second, "hours:minutes:seconds"
    일,시,분 - day_minute, "days hours:minutes"
    일,시,분,초 - day_second, "days hours:minutes:seconds"
to_days(date)

주어진 날짜를 0000년부터의 일수로 바꾼다

from_days(n)

주어진 일수 n로부터 날짜를 구한다

date_format(date, format)

format의 정의에 따라 날짜 혹은 시간을 출력

  • format
    %M : 월 이름 (january,...)
    %W : 요일명 (sunday,...)
    %D : 영어식 접미사를 붙인 일(1st, 2nd, ...)
    %Y : 년도 (4자리로)
    %y : 년도 (2자리로)
    %b : 짧은 월 이름 (jan, ...)
    %a : 짧은 요일명 (sun, ...)
    %d : 일 (00, ..., 31)
    %m : 월 (01, ..., 12)
    %c : 월 (1, ..., 12)
    %j : 한 해의 몇번째 요일인가 (001, ..., 366)
    %H : 24시 형식의 시간 (00, ..., 23)
    %k : 24시 형식의 시간 (0, ..., 23)
    %h : 12시 형식의 시간 (01, ..., 12)
    %I(대문자 i) : 12시 형식의 시간 (01, ..., 12)
    %l(소문자 L) : 시간 (1, ..., 12)
    %i : 분 (00, ..., 59)
    %r : 시분초 12시 형식 (hh:mm:ss [ap]m)
    %T : 시분초 24시 형식 (hh:mm:ss)
    %S : 초 (00,,59)
    %s : 초 (00,,59)
    %p : am 또는 pm
    %w : 일주일의 몇 번째 요일인가 (0=sun, ..., 6=sat)
    %U : 한 해의 몇 번째 주인가 (0..52, 일요일이 시작일)
    %u : 한 해의 몇 번째 주인가 (0..52, 월요일이 시작일)
    %% : '%' 문자
  • example
    select date_format('1998-04-12 08:23:00', %w %m %y');
    -> sunday april 1998
time_format(time, format)

date_format()과 비슷하나, 시분초만을 나타낼 수 있다

curdate(), current_date()

오늘 날짜를 yyyy-mm-dd 또는 yyyymmdd 형식으로 리턴
(이 함수가 문자열로 쓰이느냐 숫자로 쓰이느냐에 따라 달라짐)

  • example
    select curdate();
    -> 2020-04-19
    select curdate() + 0;
    -> 20200419
curtime(), current_time()

현재 시간을 hh:mm:ss 또는 hhmmss 형식으로 나타냄
(이 함수가 문자열로 쓰이느냐 숫자로 쓰이느냐에 따라)

now(), sysdate(), current_timestamp()

오늘 날짜와 현재 시간을 yyyy-mm-dd hh:mm:ss 또는 yyyymmddhhmmss 형식으로 리턴
(이 함수가 문자열로 쓰이느냐 숫자로 쓰이느냐에 따라)

unix_timestamp(),unix_timestampe(date)

인수가 없이 사용될 경우 현재 시간의 유닉스 타임스탬프를 리턴하고,
날짜 형식의 date가 인수로 주어진 경우에는 주어진 날짜의 유닉스 타임스탬프를 리턴
(1970년 1월 1일 00:00:00 이후의 시간경과를 초 단위로 나타낸 것)

from_unixtime(unix_timestamp), from(unix_timestamp, format)

주어진 유닉스 타임스탬프 값으로부터 yyyy-mm-dd hh:mm:ss 또는 yyyymmddhhmmss 형식의 날짜를 리턴
두번째 인자 format이 주어질 경우 형식에 맞게 바꿔서 보여줌 (date_format 함수의 format과 동일)

sec_to_time(seconds)

주어진 초를 hh:mm:ss 또는 hhmmss 형식의 시간 단위로 바꿔준다

time_to_sec(time)

주어진 시간을 초 단위로 바꿔준다

' > 데이터베이스' 카테고리의 다른 글

WITH문  (0) 2022.11.13
MySQL - WHERE절  (0) 2020.04.28
MySQL - CASE 문  (0) 2020.04.28
MySQL - group by, having  (0) 2020.04.18
프로그래머스 - SQL 연습  (0) 2020.04.16