1. 날짜형 자료 기본
협정시계시(Universal Time Coordinated)는 1972년에 공표된 국제적인 표준 시를 말한다. 한국은 UTC+9시간에 속하므로 기준시보다 9시간 빠르다.
함수 | 설명 |
CURDATE | 현재 서버 날짜 |
CURTIME | 현재 서버 시간 |
NOW | 현재 서버 날짜 및 시 |
DATETIME | YYYY-MM-DD HH:MM |
TIME | HH:MM:SS |
DATE | YYYY-MM-DD |
YEAR | YYYY or YY |
TIMESTAMP | YYYY-MM_DD HH:MM |
구분 | DATETIME | TIMESTAMP |
용도 | 시간대를 임의로 설정 | REALTIME 저장이 필요할 때(라이브 서비스) |
시간대 | 그대로 저장 | 서버의 시간대로 저장 |
범위 | 1000-01-01 ~ 9999-12-31 | 1970-01-01 00:00:00 ~ 2038-01-19 03:14:07 |
자동 업데이트 | X | (DDL) DEFAULT CURRENT_TIMESTAMP 옵션 지원 |
2. 날짜 변환 & 가공 함수
- 날짜 변환 및 가공
함수 | 설명 |
YEAR('YYYY-MM-DD') | 년도 추출 |
MONTH('YYYY-MM-DD') | 월 추출 |
DAY('YYYY-MM-DD') | 날짜 추출 |
DAYNAME('YYYY-MM-DD') | 요일의 이름 반환 |
WEEK('YYYY-MM-DD') | 주 수 반환(1 ~ 53주) |
DAYOFWEEK('YYYY-MM-DD') | 요일의 번호 반환(1 일요일 ~ 7 토요일) |
- 날짜 형변환
함수 | 설명 |
DATE_FORMAT(NOW(), '%Y-%m-%d') | 날자형 → 날짜형 변환 |
STR_TO_DATE('YYYY-MM-DD', '%Y-%m-%d') | 문자형 → 날짜형 변환 |
- 두 날짜 차이 계산
함수 | 설명 |
DATEDIFF('YYYY-MM-DD', 'YYYY-MM-DD') | 두 날짜 차이(시간정보 무시) |
TIMESTAMPDIFF(DAY, 'YYYY-MM-DD', 'YYYY-MM-DD') | 두 시간대 차이(지정된 단위 존재 - SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR) |
CONVERT_TZ(NOW(), '+00:00', +09:00) | UTC 기반 시간대 변경 |
-- EDA 창시자는 1961년 5월 6일에 태어났다. 지금은 몇 살일까?
-- 방법 1(문제는 윤년을 고려하지 않아 정확하지 않음)
SELECT DATADIFF(CURRENT_DATE(),'1961-05-06')/365
-----------------------------------------------------------------------------------------------
-- 방법 2(년도계산 & 일별 만나이 계산: 생월일을 비교하여 넘지 않았으면 -1살)
SELECT TIMESTAMPDIFF(YEAR, '1961-05-06', CURDATE()) -
(DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT('1961-05-06', '%m%d')) AS age;
- 날짜 및 시간 가공
함수 | 설명 |
DATE_ADD('YYYY-MM-DD', INTERVAL 10 DAY) | 날짜 더하기 |
DATE_SUB('YYYY-MM-DD', INTERVAL 1 MONTH) | 날짜 빼기 |
-- 현재 시간에서 2달 전 날짜 구하기
select date_sub(current_date() , interval 2 month)
'Today I Learned (TIL) > SQL' 카테고리의 다른 글
[TIL] SQL 베이직 - 4회차 (0) | 2024.07.25 |
---|---|
[TIL] SQL 베이직 - 3회차 (0) | 2024.07.25 |
[TIL] SQL 챌린지 - 3회차 (0) | 2024.07.22 |
[TIL] SQL 챌린지 - 2회차 (0) | 2024.07.22 |
[TIL] SQL 베이직 - 2회차 (0) | 2024.07.18 |