[SQL] date 타입에 대해 알아보기 (MySQL)
※ 문제 풀이를 하면서 SQL 복습 정리 ※
📖 참고 및 공식문서
Date 타입
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html
MySQL :: MySQL 8.0 Reference Manual :: 11.2 Date and Time Data Types
11.2 Date and Time Data Types The date and time data types for representing temporal values are DATE, TIME, DATETIME, TIMESTAMP, and YEAR. Each temporal type has a range of valid values, as well as a “zero” value that may be used when you specify an i
dev.mysql.com
Date 관련 함수
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functions
12.7 Date and Time Functions This section describes the functions that can be used to manipulate temporal values. See Section 11.2, “Date and Time Data Types”, for a description of the range of values each date and time type has and the valid formats
dev.mysql.com
1️⃣ Date and Time Data Type
Data Type | Value |
DATE | 'YYYY-MM-DD' |
TIME | 'HH:MM:SS' |
DATETIME | 'YYYY-MM-DD HH:MM:SS' |
TIMESTAMP | 'YYYY-MM-DD HH:MM:SS' |
🌟 DATETIME 과 TIMESTAMP의 차이점
- time zone 의존 여부
- DATETIME : 시스템의 time zone을 반영하지 않는다.
- TIMESTAMP : 시스템의 time zone을 반영하여 이에 따라 변경된다.
- 표현 범위
- DATETIME : '1000-01-01 00:00:00.000000' - '9999-12-31 23:59:59.499999'
- TIMESTAMP : '1970-01-01 00:00:01.000000' - '2038-01-19 03:14:07.499999'
- [공식문서] https://dev.mysql.com/doc/refman/8.0/en/datetime.html
2️⃣ Date Function
Function | Description |
CONVERT_TZ() | 한 시간대에서 다른 시간대로 변환 |
CURDATE() | 현재일자 반환 |
CURTIME() | 현재시간 반환 |
NOW() | 현재 날짜 및 시간 반환 |
DATE_FORMAT() |
날짜 형식 지정 |
TIME_FORMAT() |
시간 형식 지정 |
DAY() | 해당월의 일 반환(0-31) |
HOUR() | 시간 반환 |
MONTH() | 월 반환 |
YEAR() |
년도 반환 |
이외에도 다양한 함수들이 있지만 그 중 문제 풀이에 사용한 함수를 정리한다.
1. DATE_FORMAT(date, format)
: format 문자열에 따라 날짜 값의 형식을 지정 (% 지정자 형식으로 표현)
Specifier | Description |
%Y | YYYY : 네자리로 표현 |
%y | YY : 두자리로 표현 |
%M | Month name(January..December) |
%m | MM : 00 - 12 |
%D | 0th, 1st, 2nd, 3rd, … |
%d | DD : 00 - 31 |
%e | DD : 0 - 31 |
※ 문제 사용예시
date_format(reply.CREATED_DATE, '%Y-%m-%d') as CREATED_DATE
YYYY-MM-DD 형식으로 출력될 수 있도록 했다.