Mysql/Mariadb 날짜 함수: 날짜 계산에 꼭 알아야하는 7가지

Mysql/Mariadb 날짜 함수: 날짜 계산에 꼭 알아야하는 7가지 정보를 알려드리겠습니다. 내장된 날짜 함수는 데이터 분석 및 처리 작업에서 매우 유용합니다.

1. 날짜 함수 기본 CURDATE(), NOW()

CURDATE() 함수는 현재 날짜를 YYYY-MM-DD 형식으로 반환합니다. NOW() 함수는 현재 시스템의 날짜와 시간을 YYYY-MM-DD HH:MM:SS 형식으로 반환합니다. 이를 통해 현재 시간을 데이터베이스에서 가져올 수 있습니다.

이 함수는 자주 사용되며, 날짜 데이터 분석 및 처리 작업에서 유용하게 활용됩니다.

예제)

SELECT CURDATE() AS CURDATE, NOW() AS NOW;

+----------+-------------------+
|CURDATE   |NOW                |
+----------+-------------------+
|2023-09-23|2023-09-23 10:00:26|
+----------+-------------------+

2. DATE()

함수는 날짜형 데이터에서 년, 월, 일을 추출합니다.

SELECT DATE('2023-09-23 12:00:00');

2023-09-23

3. DATE_ADD 날짜 더하기

함수는 날짜에 일, 주, 월 또는 년을 더합니다.

예제 DATE_ADD)

SELECT DATE_ADD('2023-09-01', INTERVAL 1 DAY) AS DAY
     , DATE_ADD('2023-09-01', INTERVAL 1 WEEK) AS WEEK
     , DATE_ADD('2023-09-01', INTERVAL 1 MONTH) AS MONTH
     , DATE_ADD('2023-09-01', INTERVAL 1 YEAR) AS YEAR;
+----------+----------+----------+----------+
|DAY       |WEEK      |MONTH     |YEAR      |
+----------+----------+----------+----------+
|2023-09-02|2023-09-08|2023-10-01|2024-09-01|
+----------+----------+----------+----------+

DATE_ADD() 함수는 첫 번째 인수로 주어진 날짜에 두 번째 인수로 주어진 간격을 더하여 새로운 날짜를 반환합니다. 간격은 INTERVAL 키워드를 사용하여 지정하며, DAY, WEEK, MONTH 또는 YEAR와 같은 단위로 지정할 수 있습니다.

4. DATEDIFF() 날짜 차이 계산

DATEDIFF() 함수를 사용하면 두 날짜 간의 일 수 차이를 쉽게 계산할 수 있습니다.

예제 DATEDIFF()

SELECT DATEDIFF('2023-09-30', '2023-09-20') AS TYPE1,
       DATEDIFF('2023-09-20', '2023-09-30') AS TYPE2;
+-----+-----+
|TYPE1|TYPE2|
+-----+-----+
|10   |-10  |
+-----+-----+

5. LAST_DAY(), DAYOFWEEK()

LAST_DAY() 함수는 주어진 날짜의 해당 월의 마지막 날짜를 반환합니다. DAYOFWEEK() 함수는 주어진 날짜의 요일을 반환합니다.
DAYOFWEEK() 함수는 1부터 일요일, 2부터 월요일, 3부터 화요일, …, 7부터 토요일을 나타냅니다. 따라서, 다음과 같이 CASE 문을 사용하여 요일을 월화수목금토일로 표현할 수 있습니다.

SELECT LAST_DAY('2023-09-01') AS LAST,
       DAYOFWEEK('2023-09-01') AS DAYOFWEEK,
       CASE DAYOFWEEK('2022-06-23')
         WHEN 1 THEN '일'
         WHEN 2 THEN '월'
         WHEN 3 THEN '화'
         WHEN 4 THEN '수'
         WHEN 5 THEN '목'
         WHEN 6 THEN '금'
         WHEN 7 THEN '토'
         END AS WEEK;

+----------+---------+----+
|LAST      |DAYOFWEEK|WEEK|
+----------+---------+----+
|2023-09-30|6        |목   |
+----------+---------+----+

6. 시간 관련

HOUR() 함수는 주어진 시간에서 시간 부분을 추출하고 MINUTE() 함수는 주어진 시간에서 분 부분을 추출합니다.

SELECT HOUR('12:34:56') AS HOUR,
       MINUTE('12:34:56') AS MINUTE;
+----+------+
|HOUR|MINUTE|
+----+------+
|12  |34    |
+----+------+

7. DATE_FORMAT() 날짜 포맷 변환

DATE_FORMAT() 함수는 주어진 날짜를 원하는 형식으로 변환합니다.

SELECT DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %H시 %i분 %s초') AS TYPE1,
       DATE_FORMAT(NOW(), '%Y년 %m월 %e일 %h시 %i분 %s초') AS TYPE2;

+-------------------------+-------------------------------+
|TYPE1                    |TYPE2                          |
+-------------------------+-------------------------------+
|2023년 09월 23일 22시 23분 07초|2023년 09월 23일 10시 23분 07초 |
+-------------------------+-------------------------------+

SELECT DATE_FORMAT(NOW(), '%y년 %c월 %d일 %I시 %i분 %s초') AS TYPE3,
       DATE_FORMAT(NOW(), '%y년 %b월 %d일 %I시 %i분 %s초') AS TYPE4,
       DATE_FORMAT(NOW(), '%W %a') AS WEEK;
+-------------------------+------------------------+--------------+
|TYPE3                    |TYPE4                   |WEEK          |
+-------------------------+------------------------+--------------+
|23년 9월 23일 10시 23분 59초|23년 Sep월 23일 10시 23분 59초|Saturday Sat|
+-------------------------+------------------------+--------------+

%Y, %m, %d는 각각 연도, 월, 일을 나타내는 서식 지시자입니다. 다른 서식 지시자를 사용하여 날짜를 원하는 형식으로 변경 할 수 있습니다.

대표 날짜 포맷 지시자

서식 지시자설명
%Y연도(4자리). 예: 2022
%y연도(2자리). 예: 22
%m월(01~12). 예: 01
%c월(1~12). 예: 1
%b월(약식). 예: Jan
%d일(01~31). 예: 01
%e일(1~31). 예: 1
%H시간(24시간 형식). 예: 13
%h시간(12시간 형식). 예: 01
%I시간(12시간 형식). 예: 01
%i분(00~59). 예: 30
%s초(00~59). 예: 45
%pAM 또는 PM. 예: PM
%W요일(전체 이름). 예: Wednesday
%a요일(약식). 예: Wed
%j연중 일 수(001~366). 예: 180
%U연중 주 수(00~53). 예: 25
%V연중 주 수(01~53). 예: 25

Leave a Comment