728x90
[내장 함수] 날짜형 함수
@2024.05.02
DATE 함수
현재 날짜와 시간 출력
- NOW()
- 현재 시스템의 설정되어 있는 날짜와 시간을 출력
- SYSDATE()
- 시스템의 영향을 받지 않고 UTC 기준으로 현재 날짜와 시간 출력
- CURRENT_TIMESTAMP()
- 현재 시스템의 설정되어 있는 날짜와 시간을 반환하며, 시간대 설정에 영향을 받는다.
SELECT NOW(); -- 2024-05-02 13:45:30 (현재 시스템의 시간대 기준)
SELECT SYSDATE(); -- 2024-05-02 04:45:30 (UTC 기준)
SELECT CURRENT_TIMESTAMP(); -- 2024-05-02 13:45:30 (시스템 시간대 설정 기준)
현재 날짜 출력
- 현재 날짜를 필요할 때 주로 사용하며, 시간 정보는 필요하지 않고 날짜 정보만 필요할 때 사용
- 두 함수는 이름만 다를 뿐 거의 같은 함수
- CURDATE()
- 현재 날짜를 반환하며, 시간 부분은 없고 ‘YYYY-MM-DD’ 형식 문자열로 출력
- CURRENT_DATE()
- 현재 날짜를 반환하며, 시간은 없고 ‘YYYY-MM-DD’ 형식의 문자열로 출력
SELECT CURDATE(); -- '2024-05-02'
SELECT CURRENT_DATE(); -- '2024-05-02'
현재 시간 출력
- 두 함수는 이름만 다를 뿐 거의 같은 함수
- CURTIME()
- 현재 시간을 반환하며, 시간 부분만 있고 ‘HH:MM:SS’ 형식의 문자열로 출력
- CURRENT_TIME()
- 현재 시간을 반환하며, 시간 부분만 있고 ‘HH:MM:SS’ 형식의 문자열로 출력
SELECT CURTIME(); -- '13:45:30'
SELECT CURRENT_TIME(); -- '13:45:30'
날짜에서 기준값만큼 덧셈
- 두 함수는 이름만 다를 뿐 거의 같은 함수
- 기준 값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
- DATE_ADD(기준이 되는 날짜, INTERVAL 더할 값 기준값)
- 첫 번째 매개변수에 두 번째 매개변수로 지정한 시간 간격을 더한 값 출력
- ADDDATE(기준이 되는 날짜, INTERVAL 더할 값 기준값)
- 첫 번째 매개변수에 두 번째 매개변수로 지정한 시간 간격을 더한 값 출력
SELECT DATE_ADD('2024-05-06', INTERVAL 7 DAY); -- '2024-05-13'
SELECT ADDDATE('2024-05-06', INTERVAL 1 MONTH); -- '2024-06-06'
날짜에서 기준 값만큼 뺄셈
- 두 함수는 이름만 다를 뿐 거의 같은 함수
- 기준 값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
- DATE_SUB(기준이 되는 날짜, INTERVAL 뺄 값 기준값)
- 첫 번째 매개변수에서 두 번째 매개변수로 지정한 시간 간격을 뺀 값을 출력
- SUBDATE(기준이 되는 날짜, INTERVAL 뺼 값 기준 값)
- 첫 번째 매개변수에서 두 번째 매개변수로 지정한 시간 간격을 뺀 값을 출력
SELECT DATE_SUB('2024-05-13', INTERVAL 7 DAY); -- '2024-05-06'
SELECT SUBDATE('2024-06-06', INTERVAL 1 MONTH); -- '2024-05-06'
날짜 포맷
- YEAR(날짜)
- 날짜의 연도 출력
SELECT YEAR('2024-05-02'); -- 2024
- MONTH(날짜)
- 날짜의 월 출력
SELECT MONTH('2024-05-02'); -- 5
- MONTHNAME(날짜)
- 날짜의 월을 영어로 출력
SELECT MONTHNAME('2024-05-02'); -- May
- DAYNAME(날짜)
- 날짜의 요일을 영어로 출력
SELECT DAYNAME('2024-05-02'); -- Thursday
- DAYOFYEAR(날짜)
- 주어진 날짜가 해당 연도에서 몇 번째 날인지 출력
ELECT DAYOFYEAR('2024-05-02'); -- 123
- DAYOFMONTH(날짜)
- 날짜의 월별 일자를 출력
SELECT DAYOFMONTH('2024-05-02'); -- 2
- DAYOFWEEK(날짜)
- 날짜의 주별 일자 출력 (월요일 : 1, 일요일 : 0)
SELECT DAYOFWEEK('2024-05-02'); -- 목요일이므로 4 출력
- WEEKDAY(날짜)
- 날짜의 주별 일자를 출력 (월요일 : 0, 일요일 : 6)
SELECT WEEKDAY('2024-05-02'); -- 목요일이므로 3 출력
- WEEK(날짜)
- 주어진 날짜가 해당 연도에 몇 번째 주에 해당하는지 출력
SELECT WEEK('2024-05-02'); -- 18
- FROM_DAY(날 수)
- 00년 00월 00일부터 일정한 날 수만큼 경과한 날의 날짜 출력
SELECT FROM_DAYS(737895); -- '2024-05-02'
- TO_DAYS(날짜)
- 00년 00월 00일부터 주어진 날짜까지의 일자 수 출력
SELECT TO_DAYS('2024-05-02'); -- 737895
- PERIOD_DIFF(p1, p2)
- YYMM이나 YYYYMM 형식으로 표현된 p1과 p2의 차이를 월 단위로 반환
SELECT PERIOD_DIFF(202405, 202401); -- 4
- DATE_FORMAT(날짜, ‘형식’)
- 날짜를 형식에 맞게 출력
-- 현재 날짜를 '요일 월 연도' 형식으로 출력
SELECT DATA_FROMAT(CURDATE(),'%w %M %y'); -- 2 May 24
-- 현재 날짜를 '연도. 월. 일' 형식으로 출력
SELECT DATA_FROMAT(CURDATE(),'%Y. %m. %d'); -- 2024.05.02
-- 연도만 출력
SELECT DATE_FORMAT('2024-05-06', '%Y'); -- '2024'
-- 월을 2자리 숫자로 출력
SELECT DATE_FORMAT('2024-05-06', '%m'); -- '05'
-- 월을 영어로 출력
SELECT DATE_FORMAT('2024-05-06', '%M'); -- 'May'
-- 요일을 영어로 출력
SELECT DATE_FORMAT('2024-05-06', '%W'); -- 'Monday'
-- 월별 일자를 2자리 숫자로 출력
SELECT DATE_FORMAT('2024-05-06', '%d'); -- '06'
-- 일년 중 몇 번째 날인지 출력
SELECT DATE_FORMAT('2024-05-06', '%j'); -- '127'
-- 일년 중 몇 번째 주인지 출력
SELECT DATE_FORMAT('2024-05-06', '%U'); -- '18'
-- 날짜를 'YYYY-MM-DD' 형식으로 출력
SELECT DATE_FORMAT('2024-05-06', '%Y-%m-%d'); -- '2024-05-06'
728x90
'MYSQL' 카테고리의 다른 글
형 변환 (0) | 2024.05.05 |
---|---|
[내장 함수] 집계 함수 (0) | 2024.05.05 |
[내장 함수] 숫자형 함수 (0) | 2024.05.05 |
[내장 함수] 문자형 함수 (0) | 2024.05.05 |
SELECT절 (0) | 2024.05.05 |