📍https://www.yalco.kr/lectures/sql/ 를 보면 공부하면서 정리한 것 입니다.
1. 시간/날짜 관련 함수들
함수 | 설명 |
---|
CURRENT_DATE, CURDATE | 현재 날짜 반환 |
CURRENT_TIME, CURTIME | 현재 시간 반환 |
CURRENT_TIMESTAMP, NOW | 현재 시간과 날짜 반환 |
SELECT CURDATE(), CURTIME(), NOW();
함수 | 설명 |
---|
DATE | 문자열에 따라 날짜 생성 |
TIME | 문자열에 따라 시간 생성 |
SELECT
'2021-6-1' = '2021-06-01',
DATE('2021-6-1') = DATE('2021-06-01'),
'1:2:3' = '01:02:03',
TIME('1:2:3') = TIME('01:02:03');
함수 | 설명 |
---|
YEAR | 주어진 DATETIME값의 년도 반환 |
MONTHNAME | 주어진 DATETIME값의 월(영문) 반환 |
MONTH | 주어진 DATETIME값의 월 반환 |
WEEKDAY | 주어진 DATETIME값의 요일값 반환(월요일: 0) |
DAYNAME | 주어진 DATETIME값의 요일명 반환 |
DAYOFMONTH, DAY | 주어진 DATETIME값의 날짜(일) 반환 |
SELECT
orderdate,
year(orderdate) as year,
monthname(orderdate) as monthname,
month (orderdate) as month,
weekday (orderdate) as weekday,
dayname (orderdate) as dayname,
day(orderdate) as day
FROM Orders;
select OrderDate,
CONCAT(
CONCAT_WS(
'/',
year(OrderDate), month(OrderDate), day(OrderDate)
),
' ',
UPPER(left(dayname(OrderDate), 3))
)
from Orders;
함수 | 설명 |
---|
HOUR | 주어진 DATETIME의 시 반환 |
MINUTE | 주어진 DATETIME의 분 반환 |
SECOND | 주어진 DATETIME의 초 반환 |
select hour(now()), minute(now()), second(now())
함수 | 설명 |
---|
ADDDATE, DATE_ADD | 시간/날짜 더하기 |
SUBDATE, DATE_SUB | 시간/날짜 빼기 |
SELECT
ADDDATE('2021-06-20', INTERVAL 1 YEAR),
ADDDATE('2021-06-20', INTERVAL -2 MONTH),
ADDDATE('2021-06-20', INTERVAL 3 WEEK),
ADDDATE('2021-06-20', INTERVAL -4 DAY),
ADDDATE('2021-06-20', INTERVAL -5 MINUTE),
ADDDATE('2021-06-20 13:01:12', INTERVAL 6 SECOND);
함수 | 설명 |
---|
DATE_DIFF | 두 시간/날짜 간 일수차 |
TIME_DIFF | 두 시간/날짜 간 시간차 |
select
OrderDate,
now(),
DATEDIFF(OrderDate, now())
from Orders;
SELECT
OrderDate,
LAST_DAY(OrderDate),
DAY(LAST_DAY(OrderDate)),
DATEDIFF(LAST_DAY(OrderDate), OrderDate)
FROM Orders;
함수 | 설명 |
---|
DATE_FORMAT | 시간/날짜를 지정한 형식으로 반환 |
형식 | 설명 |
---|
%Y | 년도 4자리 |
%y | 년도 2자리 |
%M | 월 영문 |
%m | 월 숫자 |
%D | 일 영문(1st, 2nd, 3rd...) |
%d, %e | 일 숫자 (01 ~ 31) |
%T | hh:mm:ss |
%r | hh:mm:ss AM/PM |
%H, %k | 시 (~23) |
%h, %l | 시 (~12) |
%i | 분 |
%S, %s | 초 |
%p | AM/PM |
SELECT
DATE_FORMAT(NOW(), '%M %D, %Y %T'),
DATE_FORMAT(NOW(), '%y-%m-%d %h:%i:%s %p'),
DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %p %h시 %i분 %s초');
함수 | 설명 |
---|
STR TO DATE(S, F) | S를 F형식으로 해석하여 시간/날짜 생성 |
2. 기타 함수들
형식 | 설명 |
---|
IF(조건, T, F) | 조건이 참이라면 T, 거짓이면 F 반환 |
SELECT IF (1 > 2, '1는 2보다 크다.', '1은 2보다 작다.');
💡 보다 복잡한 조건은 CASE문을 사용합니다.
SELECT
CASE
WHEN -1 > 0 THEN '-1은 양수다.'
WHEN -1 = 0 THEN '-1은 0이다.'
ELSE '-1은 음수다.'
END;
형식 | 설명 |
---|
IFNULL(A, B) | A가 NULL일 시 B 출력 |
SELECT
IFNULL('A', 'B'),
IFNULL(NULL, 'B');