DATE : 날짜 정보 'YYYY-MM-DD'
DATETIME : 날짜와 시간 정보 'YYYY-MM-DD HH:MM:SS'
TIME : 시간정보 'HH:MM:SS'
YEAR : 네자리 연도
TIMESTAMP : DATETIME에 추가로 시간대(Timezone 정보) 포함 가능
| 함수 | 반환값 | 예 |
|---|---|---|
| NOW() | 현재 날짜와 시간 반환 | NOW() → 2023-01-28 10:30:01 |
| CURRENT_DATE() | 현재 날짜 환 | CUR_DATE() → 2023-01-28 |
| YEAR(date) | 연 반환 | YEAR('2023-01-28') → 2023 |
| MONTH(date) | 월 반환 | MONTH('2023-01-28') → 1 |
| QUARTER(date) | 분기 반환 | QUARTER('2023-01-28') → 1 |
| DAY(date) | 일 반환 | DAY('2023-01-28') → 28 |
| DATE() | 'YYYY-MM-DD'반환 | DATE(NOW()) → 2023-01-28 |
| DATE_FORMAT(date, format)* | format에 명시된 형식으로 반환 | DATE_FORMAT(NOW(),'%Y-%m-%d') → 2023-01-28 |
| STR_TO_DATE(str,format) | 문자열을 format에 맞게 날짜로 반환 | STR_TO_DATE('28,1,2023','%d,%m,%Y')→2023-01-28 |
| DATE_ADD(date, INTERVAL xx) | date에 xx더한 날짜 반환 | DATE_ADD(NOW(), INTERVAL 10 DAY) → 2023-02-07 |
| DATE_SUB(date, INTERVAL xx) | date에 xx뺀 날짜 반환 | DATE_SUB(NOW(), INTERVAL 10 DAY) → 2023-01-18 |
| EXTRACT(unit FROM date) | date에서 unit 지정한 부분 반환 | EXTRACT(YEAR_MONTH FROM NOW())→ 202301 |
| DATEDIFF(expr1,expr2) | expr1에서 expr2 뺀 날짜 일수 반환 | DATEDIFF('2023-01-28','2023-01-20')→ 8 |
| TIMESTAMPDIFF('결과값형식','날짜1','날짜2') | 날짜2-날짜1 반환 | TIMESTAMPDIFF(DAY,"2021-07-29 14:00:00" , "2021-07-29 21:00:00");→ 0 |
** DATE_FORMAT : Oracle DB에서는 TO_CHAR()을 사용
EX. TO_CHAR(sysdate(), 'YYYY-MM-DD')
위 함수들은 DATE 데이터타입에만 적용가능
예를들어 2023/02/09와 같은 Str 타입으로 데이터가 들어가있다면 사용할 수 없음
Str -> Date 함수로 변환 : str_to_date()
TIMESTAMPDIFF 안에 결과값 형식으로 사용할 수 있는 값
시분초까지 다 포함된 TIMESTAMP 타입의 데이터에 범위를 지정하여 조건 달 때에는
DATE나 LIKE 함수보다는 BETWEEN 사용하여 가공없이 지정하는 게 효율적
-- 올바른 예
WHERE order_date BETWEEN '2016-09-04 00:00:00' AND '2016-09-04 23:59:59'
-- 바람직 하지 않은 예
WHERE DATE(order_date) = '2016-09-04'
WHERE order_date LIKE '2016-09-04%'