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)'내배캠 - 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 |