현재 날짜 반환
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');
SELECT
'2021-6-1 1:2:3' = '2021-06-01 01:02:03',
DATE('2021-6-1 1:2:3') = DATE('2021-06-01 01:02:03'),
TIME('2021-6-1 1:2:3') = TIME('2021-06-01 01:02:03'),
DATE('2021-6-1 1:2:3') = TIME('2021-06-01 01:02:03'),
DATE('2021-6-1') = DATE('2021-06-01 01:02:03'),
TIME('2021-6-1 1:2:3') = TIME('01:02:03');
SELECT * FROM Orders
WHERE
OrderDate BETWEEN DATE('1997-1-1') AND DATE('1997-1-31');
DATETIME
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;
SELECT * FROM Orders
WHERE WEEKDAY(OrderDate) = 0;
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);
SELECT
OrderDate,
ADDDATE(OrderDate, INTERVAL 1 YEAR),
ADDDATE(OrderDate, INTERVAL -2 MONTH),
ADDDATE(OrderDate, INTERVAL 3 WEEK),
ADDDATE(OrderDate, INTERVAL -4 DAY),
ADDDATE(OrderDate, INTERVAL -5 MINUTE)
FROM Orders;
두 시/날짜 차
DATE_DIFF
두 시간/날짜 간 일수차
TIME_DIFF
두 시간/날짜 간 시간차
SELECT
OrderDate,
NOW(),
DATEDIFF(OrderDate, NOW())
FROM Orders;
SELECT
TIMEDIFF('2021-06-21 15:20:35', '2021-06-21 16:34:41');
SELECT * FROM Orders
WHERE
ABS(DATEDIFF(OrderDate, '1996-10-10')) < 5;
해당 달 마지막 날짜
SELECT
OrderDate,
LAST_DAY(OrderDate),
DAY(LAST_DAY(OrderDate)),
DATEDIFF(LAST_DAY(OrderDate), OrderDate)
FROM Orders;
시/날짜 지정한 형식으로 반환
DATE_FORMAT
시간/날짜를 지정한 형식으로 반환
%Y
년도 4자리
%T
hh:mm:ss
%y
년도 2자리
%r
hh:mm:ss AM/PM
%M
월 영문
%H , %k
시 (~23)
%m
월 숫자
%h , %l
시 (~12)
%D
일 영문(1st, 2nd, 3rd...)
%i
분
%d , %e
일 숫자 (01 ~ 31)
%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초');
SELECT REPLACE(
REPLACE(
DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %p %h시 %i분 %초'),
'AM', '오전'
),
'PM', '오후'
)
STR _ TO _ DATE (S, F)
S를 F형식으로 해석하여 시간/날짜 생성
SELECT
DATEDIFF(
STR_TO_DATE('2021-06-04 07:48:52', '%Y-%m-%d %T'),
STR_TO_DATE('2021-06-01 12:30:05', '%Y-%m-%d %T')
),
TIMEDIFF(
STR_TO_DATE('2021-06-04 07:48:52', '%Y-%m-%d %T'),
STR_TO_DATE('2021-06-01 12:30:05', '%Y-%m-%d %T')
);
SELECT
OrderDate,
DATEDIFF(
STR_TO_DATE('1997-01-01 13:24:35', '%Y-%m-%d %T'),
OrderDate
),
TIMEDIFF(
STR_TO_DATE('1997-01-01 13:24:35', '%Y-%m-%d %T'),
STR_TO_DATE(CONCAT(OrderDate, ' ', '00:00:00'), '%Y-%m-%d %T')
)
FROM Orders;