MariaDB에서 지금 날짜 및 시간 정보를 확인하고 싶다면
SELECT NOW()
FROM DUAL;
--------------------
2023-11-03 02:41:02.000
을 통해 알 수 있다.
SQL에는 날짜 자료형도 있다. 따라서 날짜 자료형을 다루는 함수도 존재한다.
SELECT NOW(),
DATE_FORMAT(NOW(), '%Y') Year,
DATE_FORMAT(NOW(), '%M') Month,
DATE_FORMAT(NOW(), '%Y.%m.%d') Date
FROM DUAL;
-------------------------------------------------------
|NOW() | Year | Month | Date |
|2023-11-03 03:12:54.000 | 2023 | November | 2023.11.03 |
DATE_FORMAT
함수를 통해 날짜 자료형을 문자열로 변환할 수 있다.
SELECT "20230311",
STR_TO_DATE("20230311", "%Y%m%d")
FROM DUAL;
---------------------------------------
20231103 2023-03-11
STR_TO_DATE
함수를 통해 문자열을 날짜 자료형으로 변활할 수 있다.
SELECT "20230311",
DATE_ADD(STR_TO_DATE("20230311", "%Y%m%d"), INTERVAL 1 MONTH)
FROM DUAL;
------------------------------------------------------------------
2023-04-11
DATE_ADD
함수를 통해 날짜 연산이 가능하다.
위 코드는 2023년11월03일 데이터에 1달을 더해준 것이다.
SELECT "20231103",
STR_TO_DATE("20231103", "%Y%m%d"),
DATE_ADD(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y-%m-01'), '%Y-%m-%d'), INTERVAL 1 MONTH), INTERVAL -1 DAY)
FROM DUAL;
--------------------------------------------------------
2023-11-03 2023-11-30
해당 월의 마지막 날이 몇 일인지 구하는 연산이다.
우선 STR_TO_DATE(DATE_FORMAT(NOW(), '%Y-%m-01'), '%Y-%m-%d')
을 통해 오늘 날짜 정보를 구한 후, 해당 1일로 만들어준다.
그 다음 DATE_ADD
함수를 통해 +1달을 해주어 다음 달 1일로 만들어준다.
마지막으로 DATE_ADD(..., INTERVAL -1 DAY)
통해 1일 전으로 변환해주면 이전 달의 마지막 날을 알 수 있게 된다.