Sparta_coding_club/SQL
[SQL문법] 날짜 형식 /DATEDIFF / DATE_ADD / DATE_FORMAT
데이터분석쇼니
2024. 1. 22. 10:39
날짜의 유형
DATE
- 시간 정보가 없는 날짜
- YYYY-MM-DD
TIME
- 날짜 정보가 없는 시간
- HH:MM:SS
DATETIME
- 날짜 및 시간 정보를 모두 나타냄
- YYYY-MM-DD HH:MM:SS
TIMESTAMP
- DATETIME과 유사하지만 범위가 차이가 있음
날짜 관련 기본 함수
NOW( )
- 현재 날짜와 시간
CURDATE( ) / CURRENT_DATE( )
- 현재 날짜
CURTIME( ) / CURRENT_TIME( )
- 현재 시간
DATE( )
- DATETIME 식의 날짜 부분을 추천
TIME( )
- DATETIME 식의 시간 부분을 추출
DATE_ADD( ) / DATE_SUB( )
- 날짜에 간격을 더하거나 빼는 함수
DATEDIFF( )
- 두 날짜의 차이를 일 단위로 계산하는 함수
날짜와 시간 가져오기
DATE( )
- DATETIME 또는 TIMESTAMP 값에서 날짜 부분을 추출
YEAR( ) / MONTH( ) / DAY( )
- 날짜에서 연도 / 월 / 일자를 추출
DATE_FORMAT( )
- 지정된 형식에 따라 날짜 형식을 지정
DATE_FORMAT (날짜 형식 바꾸기)
- 날짜 포맷이란 특정 날짜를 사용자가 원하는 형태로 변경하는 것
- 날짜 포맷을 하기 위해서 포맷 문자를 넣은 후 구분자나 띄어쓰기를 통해 표현
- DATE_FORMAT(날짜, '%Y-%m-%dt%H:%i:%S')
%Y | %y | %m | %d | %H | %i | %S |
4자리 년도 (1990, 1987) |
2자리 년도 (90, 87) |
2자리 월 (10, 12) |
2자리 일 (26, 24) |
24시간 (10, 22, 23) |
2자리 분 | 2자리 초 |
%M | %b | %c | %e | %I | %W | %a |
영문 월(풀네임) January August |
영문 월(요약) Jan Aug |
1자리 월 (1, 10) |
1자리 일 (1, 19) |
시간(12시간) (10, 10, 11) |
영문 요일(풀) Wednesday Friday |
영문 요일(요약) Wed Fri |
- 날짜 영문으로 바꾸기
SELECT DATE_FORMAT('20000119', '%W, %e %M %Y, %r') → Wednesday, 19 January 2000, 12:00:00 AM |
- 날짜 바꾸기 예시
DATE_FORAMT('19901026', ' %y- %m- %d') | 90-10-26 |
DATE_FORAMT('19901026', ' %y%m%d') | 901026 |
DATE_FORAMT('19901026', ' %Y- %m- %d') | 1990-10-26 |
DATE_FORAMT('19901026', ' %Y/ %m/ %d') | 1990/10/26 |
DATE_FORAMT(my_birthday, '%Y.%m.%d %H:%i:%S' ) | 1990.10.26 06:30:00 |
DATE_FORAMT(my_birthday, ' '%Y.%m.%d %H:%i:%S %W ' ) | 1990.10.26 06:30:00 Thursday |
날짜 차이 구하기
TIMESTAMPDIFF
- DATEPART(기준) 단위로, STARTDATE 와 ENDDATE 간의 차이를 구해주는 함수
SELECT TIMESTAMPDIFF( DATEPART, STARTDATE, ENDDATE)
SELECT TIMESTAMPDIFF(YEAR, '2020-09-30', '2021-09-30')
-- 1
SELECT TIMESTAMPDIFF(MONTH, '2020-09-30', '2021-09-30')
-- 12
SELECT TIMESTAMPDIFF(DAY, '2020-09-30', '2021-09-30')
-- 365
SELECT TIMESTAMPDIFF(HOUR, '2020-09-30 09:00', '2021-09-30 19:00')
-- 10
DATEDIFF
- 날짜 1 - 날짜2의 일차이를 구하는 함수