DB + SQL
[SQL] - SQL 날짜관련 함수 ( 날짜 포맷, 간격, 등등)
dev_SiWoo
2020. 8. 24. 16:02
1. 날짜 및 시간을 출력하는 기본적인 함수
SELECT NOW(), CURDATE(), SYSDATE();
2. 날짜 간격을 구하는 함수
SELECT DATEDIFF('2021-02-26','2020-08-21'), TIMESTAMPDIFF(SECOND, NOW(), '2020-12-25 00:00:00');
DateDiff() : 날짜간격을 일단위로 리턴
TimeStrampdiff () : 날짜간격을 초단위로 리턴
3. 각종 날짜관련 함수
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), WEEKDAY(NOW()), DAYOFWEEK(NOW()), WEEK(NOW());
weekday() : 요일 (월:0)
dayofweek() : 요일 (일1..)
SQL 예제1. 직원이름, 입사일, 정규직 전환일을 출력하라 이때, 정규직 전환일은 입사후 3개월 이후이다.
SELECT ename, hiredate, DATE_ADD(hiredate, INTERVAL 3 MONTH) AS 정규직전환일 FROM emp;
4. 특정일자로부터 일정기간 전/후 구하기
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 10 MONTH); # 현재로부터 10달뒤
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 10 DAY); # 현재로부터 10일뒤
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 10 HOUR); # 현재로부터 10시간뒤
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 10 MINUTE);# 현재로부터 10분뒤
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 10 SECOND);# 현재로부터 10초뒤
반대로 DATE_SUB()를 이용하거나 ADD함수에서 INTERVAL -10 이런식으로 음수를 사용하면된다.
5. 날짜 포맷
- str_to_date : 문자열를 날짜로 변환
SELECT '2020-08-21', STR_TO_DATE('2020-08-21', '%Y-%m-%d');
- date_format : 날짜를 문자열로 변환
SELECT NOW(),
DATE_FORMAT(NOW(), '%Y년 %m월 %d일'),
DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %H %i %s'),
DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %H %i %s, %p');