[SQL] - SQL 날짜관련 함수 ( 날짜 포맷, 간격, 등등)

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');