갖고노는 MySQL 데이터베이스 by 얄코 O4~05강
04강 시간/날짜 관련 및 기타 함수들
| 함수 | 설명 |
|---|---|
| CURRENT_DATE, CURDATE | 현재 날짜 반환 |
| CURRENT_TIME, CURTIME | 현재 시간 반환 |
| CURRENT_TIMESTAMP, NOW | 현재 시간과 날짜 반환 |
| DATE | 문자열에 따라 날짜 생성 |
| TIME | 문자열에 따라 시간 생성 |
| YEAR | 주어진 DATETIME값의 년도 반환 |
| MONTHNAME | 주어진 DATETIME값의 월(영문) 반환 |
| MONTH | 주어진 DATETIME값의 월 반환 |
| WEEKDAY | 주어진 DATETIME값의 요일값 반환(월요일: 0) |
| DAYNAME | 주어진 DATETIME값의 요일명 반환 |
| DAYOFMONTH, DAY | 주어진 DATETIME값의 날짜(일) 반환 |
| HOUR | 주어진 DATETIME의 시 반환 |
| MINUTE | 주어진 DATETIME의 분 반환 |
| SECOND | 주어진 DATETIME의 초 반환 |
| ADDDATE, DATE_ADD | 시간/날짜 더하기 |
| SUBDATE, DATE_SUB | 시간/날짜 빼기 |
| DATE_DIFF | 두 시간/날짜 간 일수차 |
| TIME_DIFF | 두 시간/날짜 간 시간차 |
| LAST_DAY | 해당 달의 마지막 날짜 |
| DATE_FORMAT | 시간/날짜를 지정한 형식으로 반환 |
| %Y | 년도 4자리 |
| %y | 년도 2자리 |
| %M | 월 영문 |
| %m | 월 숫자 |
| %D | 일 영문(1st, 2nd, 3rd…) |
| %d, %e | 일 숫자 (01 ~ 31) |
| %T | hh:mm:ss |
| %r | hh:mm:ss AM/PM |
| %H, %k | 시 (~23) |
| 시 (~23) | 시 (~12) |
| %i | 분 |
| %S, %s | 초 |
| %p | AM/PM |
| STR _ TO _ DATE(S, F) | S를 F형식으로 해석하여 시간/날짜 생성 |
| IF(조건, T, F) | 조건이 참이라면 T, 거짓이면 F 반환 |
| IFNULL(A, B) | A가 NULL일 시 B 출력 |
05강 조건에 따라 그룹으로 묶기
- DISTINCT 중복된 값들 제거
- GROUP BY 와 달리 집계함수가 사용되지 않습니다.
- GROUP BY 와 달리 정렬하지 않으므로 더 빠릅니다.
SELECT DISTINCT CategoryID
FROM Products;
-- 위의 GROUP BY를 사용한 쿼리와 결과 비교

SELECT COUNT DISTINCT CategoryID
FROM Products;
-- 오류 발생

SELECT DISTINCT Country
FROM Customers
ORDER BY Country;

SELECT DISTINCT Country, City
FROM Customers
ORDER BY Country, City;

GROUP BY 와 DISTINCT 함꼐 사용해보기
SELECT
Country,
COUNT(DISTINCT CITY)
FROM Customers
GROUP BY Country;
