본문 바로가기
DB/MySQL

[MYSQL] 날짜 관련 알아보기

by 애기 개발자 2023. 9. 12.
반응형

1, 날짜 형식

 

MYSQL에서 사용하는 날짜 형식은 주로 DATETIME / DATE 두 가지가 쓰인다.

 

DATETIME 타입은 YYYY-MM-DD hh:mm:ss 

DATE 타입은 YYYY-MM-DD 형식이다. 

 

여기서 두 타입을 다시 편한 대로 바꿀 수 있는 방법이 있다.

 

DATE_FORMAT('날짜', '형식')

 

위의 방법으로 사용된다.

 

주로 쓰이는 DATE_FORMAT의 형식들은 다음과 같다.

 

FORMAT 설명
%Y 연도 (2023, 1999, 2002...)
%y 연도 (23, 99, 02...)
%M 월 (Janeary, February, March...)
%m 월 (01, 02, 03...)
%D 일 (1st, 2nd, 3rd...26th...)
%d 일 (01, 02, 03 ... 26...)
%H 시간 (00~23)
%h 시간 (01~12)
%i 분 (00~59)
%s 초 (00~59)
%p 오전/오후 (AM, PM)

아마 이 정도만 알아도 충분할 것이라 생각된다...

 

그래서 어떻게 사용하는가?

 

SELECT DATE_FORMAT("2023-09-12 20:02:32", "%Y-%m-%d %h:%i:%s")

2023-09-12 08:02:32

위와 같이 나오게 된다.

 

만약 형식을 바꾼다면

 

SELECT DATE_FORMAT("2023-09-12 20:02:32", "%Y년 %m월 %d일 %h시 %i분 %s초")

2023년 09월 12일 08시 02분 32초

위와 같이 지정된 형식대로 표기가 가능하다.


 

2. 날짜 계산

  • DATE_ADD() : 날짜, 시간 더하기
  • DATE_SUB() : 날짜, 시간 빼기
  • DATEDIFF() : 두 기간 사이의 일수 계산
  • TIMEDIFF() : 두 기간 사이의 시간 계산
  • PERIOD_DIFF() : 두 기간 사이의 개월 수 계산
  • TIMESTAMPDIFF() : 두 기간 사이의 시간 계산

 

DATE_ADD()

DATE_ADD(기준날짜, INTERVAL 'N' <YEAR, MONTH, DAY, HOUR, MINUTE, SECOND>)

SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND)
SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE)
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR)
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY)
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH)
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR)
SELECT DATE_ADD(NOW(), INTERVAL -1 YEAR)

 

DATE_SUB()

DATE_SUB(기준날짜, INTERVAL 'N' <year, month,="" day,="" hour,="" minute,="" second="">)</year,>

SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND)
SELECT DATE_SUB(NOW(), INTERVAL 1 MINUTE)
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR)
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY)
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH)
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR)
SELECT DATE_SUB(NOW(), INTERVAL -1 YEAR)

 

 

DATEDIFF()

DATEDIFF(기준날짜1, 기준날짜2)

  • 두 기간 사이의 day를 계산
  • 시간은 고려하지 않음
  • 날짜 범위에서 벗어나는 값을 입력 시 NULL 리턴
SELECT DATEDIFF('2023-09-12', '2023-09-01')

 

TIMEDIFF()

TIMEDIFF(기준시간1, 기준시간2)

  • 두 시간 사이의 시간 계산
  • 시간 또는 날자 범위에서 벗어난 값을 입력 시 NULL 리턴
SELECT TIMEDIFF('2023-09-12 23:00:00', '2023-09-12 01:00:00')

PERIOD_DIFF()

PERIOD_DIFF(기준년월1, 기준년월2)

  • 두 기간 사이의 개월 수 계산
  • 기준년월은 YYYYMM 혹은 YYMM 형식
SELECT PERIOD_DIFF('202309', '202302')

 

TIMESTAMPDIFF()

TIMESTAMPDIFF(<YEAR, MONTH, DAY, HOUR, MINUTE, SECOND>, 기준 시간1, 기준 시간 2)

  • 기준 시간1과 기준 시간2의 차이를 앞에 선언된 단위에 따라 계산

 

SELECT TIMESTAMPDIFF(YEAR, '2022-01-01 00:00:00', '2023-01-01 23:59:59')
SELECT TIMESTAMPDIFF(MONTH, '2022-01-01 00:00:00', '2023-01-01 23:59:59')
SELECT TIMESTAMPDIFF(DAY, '2022-01-01 00:00:00', '2023-01-01 23:59:59')
SELECT TIMESTAMPDIFF(HOUR, '2022-01-01 00:00:00', '2023-01-01 23:59:59')
SELECT TIMESTAMPDIFF(MINUTE, '2022-01-01 00:00:00', '2023-01-01 23:59:59')
SELECT TIMESTAMPDIFF(SECOND, '2022-01-01 00:00:00', '2023-01-01 23:59:59')

 

반응형

댓글