본문 바로가기

MySQL

MySQL에서 시간 함수 활용하기

MySQL에서 시간과 날짜를 처리하는 데 다양한 함수들이 제공됩니다. 이 글에서는 이러한 시간 함수들을 자세히 살펴보고, 각 함수의 사용 방법과 예제를 통해 이해를 도와드리겠습니다.

 

현재 시간과 날짜 반환 함수

NOW(), CURRENT_TIMESTAMP(), SYSDATE()

이 함수들은 현재 날짜와 시간을 반환합니다.

 

SELECT NOW(), CURRENT_TIMESTAMP(), SYSDATE();

 

  • NOW(): 현재 날짜와 시간을 'yyyy-mm-dd hh:mm:ss' 또는 yyyymmddhhmmss 형식으로 반환합니다.
  • CURRENT_TIMESTAMP(): NOW()와 동일한 기능을 합니다.
  • SYSDATE(): NOW()와 비슷하지만, 함수가 실행되는 시점의 시각을 반환합니다. 즉, 동일한 쿼리 내에서 여러 번 호출될 때마다 다른 값을 반환할 수 있습니다.

CURDATE(), CURRENT_DATE()

이 함수들은 현재 날짜만 반환합니다.

 

  • CURTIME(): 현재 시간을 'hh:mm:ss' 또는 hhmmss 형식으로 반환합니다.

 

 

날짜와 시간의 특정 부분 추출 함수

YEAR(), MONTH(), DAY()

이 함수들은 날짜에서 특정 부분을 추출합니다.

 

 

SELECT YEAR('2023-03-08'), MONTH('2023-03-08'), DAY('2023-03-08');

 

  • YEAR(date): 날짜의 년도를 반환합니다.
     
  • MONTH(date): 날짜의 월을 반환합니다.
  • DAY(date) 또는 DAYOFMONTH(date): 날짜의 일을 반환합니다.

HOUR(), MINUTE(), SECOND()

이 함수들은 시간에서 특정 부분을 추출합니다.

 

SELECT HOUR('10:05:03'), MINUTE('10:05:03'), SECOND('10:05:03');

 

  • HOUR(time): 시간의 시를 반환합니다.
  • MINUTE(time): 시간의 분을 반환합니다.
  • SECOND(time): 시간의 초를 반환합니다.

날짜와 시간 연산 함수

DATE_ADD(), ADDDATE()

이 함수들은 날짜나 시간에 특정 기간을 더합니다.

 

SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR);

SELECT ADDDATE(NOW(), INTERVAL 1 YEAR);

 

  • DATE_ADD(date, INTERVAL value unit): 날짜나 시간에 지정된 기간을 더합니다. 예: INTERVAL 1 YEAR, INTERVAL 1 MONTH, INTERVAL 1 DAY 등

 

DATE_SUB(), SUBDATE()

이 함수들은 날짜나 시간에서 특정 기간을 뺍니다.

 

SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR);

SELECT SUBDATE(NOW(), INTERVAL 1 YEAR);

 

  • DATE_SUB(date, INTERVAL value unit): 날짜나 시간에서 지정된 기간을 뺍니다. 예: INTERVAL 1 YEAR, INTERVAL 1 MONTH, INTERVAL 1 DAY 등

 

날짜와 시간 차이 계산 함수

DATEDIFF()

이 함수는 두 날짜 사이의 일 수 차이를 계산합니다

 

SELECT DATEDIFF(NOW(), '2023-01-01');

 

  • TIMEDIFF(time1, time2): 두 시간 또는 날짜/시간 값 사이의 차이를 반환합니다.

 

TIMESTAMPDIFF()

이 함수는 두 시점 사이의 시간 차이를 지정된 단위로 계산합니다.

 

SELECT TIMESTAMPDIFF(YEAR, '2023-01-01', NOW());

SELECT TIMESTAMPDIFF(MONTH, '2023-01-01', NOW());

SELECT TIMESTAMPDIFF(DAY, '2023-01-01', NOW());

 

  • TIMESTAMPDIFF(unit, start_date, end_date): 두 시점 사이의 시간 차이를 지정된 단위로 반환합니다. 예: YEAR, MONTH, DAY 등

 

DATE_FORMAT()

이 함수는 날짜와 시간을 지정한 형식으로 반환합니다.

 

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');

 

 

  • DATE_FORMAT(date, format): 날짜와 시간을 지정한 형식으로 반환합니다. 예: '%Y-%m-%d %H:%i:%s' 등

 

TIME_FORMAT()

이 함수는 시간을 지정한 형식으로 반환합니다.

 

SELECT TIME_FORMAT('10:05:03', '%H:%i:%s');

 

  • TIME_FORMAT(time, format): 시간을 지정한 형식으로 반환합니다. 예: '%H:%i:%s' 등

 

날짜의 마지막 날짜 반환 함수

LAST_DAY()

이 함수는 입력된 날짜의 월의 마지막 날짜를 반환합니다.

 

SELECT LAST_DAY('2023-03-08');

  • LAST_DAY(date): 입력된 날짜의 월의 마지막 날짜를 반환합니다.

 

 

 

요약

MySQL의 시간 함수들은 다양한 상황에서 유용하게 사용될 수 있습니다. 위에서 설명한 함수들을 통해 날짜와 시간을 효율적으로 처리하고, 필요한 형식으로 변환할 수 있습니다.

  • 현재 날짜와 시간 반환: NOW(), CURDATE(), CURTIME()
  • 특정 부분 추출: YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND()
  • 날짜와 시간 연산: DATE_ADD(), DATE_SUB(), DATEDIFF(), TIMEDIFF(), TIMESTAMPDIFF()
  • 형식 설정: DATE_FORMAT(), TIME_FORMAT()
  • 월의 마지막 날짜: LAST_DAY()

이 함수들을 적절하게 사용하면, MySQL에서 날짜와 시간 관련 작업을 쉽고 효율적으로 수행할 수 있습니다.