01. 현재 날짜 및 시간 반환 기능
- CURRENT_DATE( ), CURDATE( ) : 현재 날짜를 반환
- CURRENT_TIME( ), CURTIME( ): 현재 시간을 반환
- CURRENT_TIMESTAMP( ), NOW( ): 현재 시간과 날짜의 절반
SELECT CURDATE(),
CURTIME(),
NOW();
02. 특정 날짜 및 시간 정보 반환
· 샘플 테이블
CREATE TABLE orders (
order_id INT NOT NULL AUTO_INCREMENT,
order_date DATE NOT NULL,
order_time TIME NOT NULL,
PRIMARY KEY (order_id)
);
INSERT INTO orders (order_date, order_time) VALUES
('2022-01-01', '10:30:00'),
('2022-01-02', '14:45:00'),
('2022-01-03', '18:00:00'),
('2022-01-04', '09:15:00'),
('2022-01-05', '16:30:00'),
('2022-01-06', '11:00:00'),
('2022-01-07', '13:45:00'),
('2022-01-08', '20:00:00'),
('2022-01-09', '12:00:00'),
('2022-01-10', '15:30:00');
1) 날짜
- DATE( ) : 문자열로부터 날짜 정보 생성
- YEAR( ) : 날짜 정보에서 연도에 해당하는 값을 반환
- MONTH( ) : 날짜 정보에서 월에 해당하는 값을 반환
- 월 이름: 날짜 정보에서 월(영문)에 해당하는 값을 반환
- DAYOFMONTH( ), DAY( ): 날짜 정보에서 날짜에 해당하는 값 반환
- WEEKDAY( ) : 날짜 정보에서 요일을 반환(월요일은 0)
- DAYNAME( ) : 날짜 정보에 따라 요일을 반환
SELECT
'2023-3-8' = '2023-03-08',
DATE('2023-3-8') = DATE('2023-03-08');
SELECT
order_date,
YEAR(order_date) 연도,
MONTH(order_date) 월,
MONTHNAME(order_date) 월,
DAYOFMONTH(order_date) 일,
DAY(order_date) 일,
WEEKDAY(order_date) 요일값,
DAYNAME(order_date) 요일명
FROM orders;
2시간
- TIME( ): 문자열 기반의 시간 정보 생성
- HOUR( ) : 시간 정보에서 시간에 해당하는 값을 반환
- MINUTE( ): 시간 정보에서 분에 해당하는 값을 반환
- SECOND( ): 시간 정보에서 초에 해당하는 값을 반환
SELECT
'1:2:3' = '01:02:03',
TIME('1:2:3') = TIME('01:02:03');
SELECT
NOW() ,
HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
SELECT
order_time,
HOUR(order_time),
MINUTE(order_time),
SECOND(order_time)
FROM orders;
03. 시간/날짜 계산 기능
- ADDDATE, DATE_ADD(날짜, INTERVAL 값 단위): 시간/날짜 추가
– 단위 : ‘MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR가 올 수 있습니다.
SELECT
date(now()),
ADDDATE(date(now()), INTERVAL 1 YEAR),
ADDDATE(date(now()), INTERVAL -2 MONTH),
ADDDATE(date(now()), INTERVAL 3 WEEK),
ADDDATE(date(now()), INTERVAL -4 DAY),
ADDDATE(date(now()), INTERVAL -5 MINUTE),
ADDDATE(now(), INTERVAL 6 SECOND);
SELECT
order_date,
ADDDATE(order_date, INTERVAL 1 YEAR),
ADDDATE(order_date, INTERVAL -2 MONTH),
ADDDATE(order_date, INTERVAL 3 WEEK),
ADDDATE(order_date, INTERVAL -3 DAY),
ADDDATE(order_date, INTERVAL -10 MINUTE)
FROM Orders;
- SUBDATE, DATE_SUB(날짜, INTERVAL 값 단위) : 시간/날짜 빼기
– 단위 : ‘MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR가 올 수 있습니다.
SELECT
SUBDATE('2022-03-08', INTERVAL 1 DAY),
SUBDATE('2022-03-08', INTERVAL -1 MONTH);
SELECT
order_date,
SUBDATE(order_date, INTERVAL 1 YEAR),
SUBDATE(order_date, INTERVAL -2 MONTH),
SUBDATE(order_date, INTERVAL 3 WEEK),
SUBDATE(order_date, INTERVAL -3 DAY),
SUBDATE(order_date, INTERVAL -10 MINUTE)
FROM Orders;
- DATE_DIFF(end_date, start_date): 두 날짜 사이의 날짜 차이를 계산하여 반환합니다.
- TIME_DIFF(time1, time2): 두 시간 또는 날짜/시간 값의 차이를 계산하여 반환합니다.
– time1 및 time2 값은 모두 시간 형식(HH:MM:SS) 또는 날짜/시간 형식(YYYY-MM-DD HH:MM:SS)이어야 합니다.
SELECT DATEDIFF('2023-03-10', '2023-03-08'),
DATEDIFF('2023-03-08', '2023-03-10'),
DATEDIFF(NOW(), '2023-03-01');
SELECT
TIMEDIFF('23:59:59', '00:00:01'),
TIMEDIFF('2023-03-08 09:00:00', '2023-03-08 08:30:00');
- LAST_DAY(date) : 입력한 날짜가 속한 달의 마지막 날을 반환
SELECT
order_date,
LAST_DAY(order_date),
DAY(LAST_DAY(order_date)),
DATEDIFF(LAST_DAY(order_date), order_date)
FROM Orders;
- DATE_FORMAT(날짜, 형식): 지정된 형식으로 시간/날짜를 반환합니다.
형태 | 설명하다 | 예 |
%ㅏ | 요일은 세 글자로 표시됩니다. |
일요일부터 토요일까지 |
%비 | 월의 3글자 약어입니다. |
1월~12월 |
%씨 | 월을 숫자로 나타냅니다. |
0~12 |
%디 | 날짜 뒤에 영문 일련번호 추가 | 0번째, 1번째, 2번째, 3번째… |
%디 | 날짜를 두 자리 숫자로 나타냅니다. |
00~31 |
%이자형 | 날짜를 숫자로 나타냅니다. |
0 ~ 31 |
%에프 | 마이크로초를 6자리로 나타냅니다. |
000000 ~ 999999 |
%시간 | 두 자리 숫자로 된 24시간 형식의 시간. | 00에서 23 |
%시간 | 12시간 형식 시간은 두 자리 숫자로 표시됩니다. |
01~12 |
%나 | 12시간 형식 시간은 두 자리 숫자로 표시됩니다. |
01~12 |
%나 | 분은 두 자리 숫자로 표시됩니다. |
00~59 |
%제이 | 3자리 숫자로 된 연도의 일입니다. |
001 ~ 366 |
%케이 | 24시간 형식으로 시간을 나타냅니다. |
0 ~ 23 |
%엘 | 시간을 12시간 형식으로 나타냅니다. |
1~12 |
%중 | 완전한 문자열로 월을 나타냅니다. |
1월~12월 |
%중 | 월을 두 자리 숫자로 나타냅니다. |
00에서 12 |
%피 | AM과 PM의 대문자. | 오전 아니면 오후 |
%아르 자형 | hh:mm:ss AM/PM 형식으로 시간을 나타냅니다. (12시간 형식) |
오전 00:00:01 |
%에스 | 초는 두 자리입니다. |
00~59 |
%에스 | 초는 두 자리입니다. |
00~59 |
%티 | 시간은 hh:mm:ss 형식으로 표시됩니다. (24시간 형식) |
23:01:01 |
% 유 | 해당 연도의 주를 나타내는 숫자입니다. (주는 일요일에 시작) |
00~53 |
%유 | 해당 연도의 주를 나타내는 숫자입니다. (주는 월요일에 시작) |
00~53 |
%V | 해당 연도의 주를 나타내는 숫자입니다. (주 시작은 일요일, %X 형식 사용) |
00~53 |
%V | 해당 연도의 주를 나타내는 숫자입니다. (주는 월요일에 시작, %x 형식 사용) |
00~53 |
%W | 완전한 문자열로서의 요일. | 일요일~토요일 |
%w | 요일은 숫자로 표시됩니다. |
0(일요일) ~ 6(토요일) |
%엑스 | 전체 4자리 숫자로 연도를 나타냅니다. (주 시작은 일요일, %V 형식 사용) |
1999년 또는 2003년 |
%엑스 | 전체 4자리 숫자로 연도를 나타냅니다. (주는 월요일에 시작, %v 형식 사용) |
1999년 또는 2003년 |
%와이 | 전체 4자리 숫자로 연도를 나타냅니다. |
1999년 또는 2003년 |
%와이 | 연도는 두 자리입니다. |
99 또는 03 |
%% | ‘%’ 정보 | % |
원천: http://www.tcpschool.com/mysql/mysql_builtInFunction_dateTime
SELECT DATE_FORMAT('2021-03-08', '%Y-%m-%d'),
DATE_FORMAT('2021-03-08', '%W, %M %e, %Y'),
DATE_FORMAT('2021-03-08', '%Y년 %m월 %d일');
소스 및 인용하다