최근 mariaDB를 사용 할 일이 많아졌다. 그러다가 아주 간단한 날짜형식같은 것들도 까먹는 경우가 생겨서 매번 찾아보기 귀찮아서 이렇게 정리를 한다. 막 기억이 안나서 SUBSTR같은 함수로 잘라서 사용하는 지저분한 쿼리 말고 될수있으면 지원되는 함수를 사용하여 최대한 깔끔한 쿼리를 작성하는 방향으로 연습하자.
CURRENT_DATE, CURDATE()
현재 년월일을 출력한다. CURRENT_DATE 같은 경우 괄호가 필요없으며 CURDATE()의 경우 괄호가 필요하다. 둘다 출려되는 내용은 같다. 조금이라도 길이가 짧은 CURDATE()를 대부분 선호하는 편이다.
특정한 포멧을 지정하지 않으면 y-m-d 가 기본 포멧이다.
실행
SELECT CURRENT_DATE AS C_D, CURDATE() AS CD FROM DUAL
결과
"2022-06-30" "2022-06-30"
CURRENT_TIME, CURTIME()
현재 시분초를 출력한다. CURRENT_TIME 같은 경우 괄호가 필요없으며 CURTIME()의 경우 괄호가 필요하다. 둘다 출려되는 내용은 같다. 조금이라도 길이가 짧은 CURTIME()를 대부분 선호하는 편이다.
특별한 포멧을 지정하지 않으면 h:m:s 가 기본 포멧이다.
실행
SELECT CURRENT_TIME AS C_T, CURTIME() AS CT FROM DUAL
결과
"14:42:36" "14:42:36"
NOW()
현재 년월일시분초 를 출력한다. CURDATE() + CURTIME() 이라고 생각해도 된다.
특별히 현재년월일을 출력하거나 현재시분초를 출력하는 것이 아니라면 NOW()를 사용하는 편이 입맛에 맞게 변환하기가 좋다.
실행
SELECT NOW() FROM DUAL
결과
2022-06-30 14:43:48
YEAR(), MONTH(), DAY()
기준날짜에서 YEAR() 는 년도, MONTH() 는 월, DAY는 일을 표기한다. 예시로 NOW()를 기준으로 뒀는데, 만약 20221231이 기준이라면 YEAR() == 2022, MONTH() == 12, DAY() == 31 을 출력해 줄것이다.
실행
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()) FROM DUAL
결과
"2022" "6" "30"
DATE_ADD()
특정 날짜를 더하거나 뺄때 사용한다. 사용법은 아주 간단해서 숫자를 입력하고 뒤에 년월일 시분초 를 입력하면 입력한 만큼의 기간을 계산해서 보여준다. 기간별 검색이나 특정 구간의 날짜만 검색할때 아주 유용하게 쓰인다.
실행
SELECT
NOW() AS N
, DATE_ADD(NOW(), INTERVAL 2 HOUR) AS PH
, DATE_ADD(NOW(), INTERVAL -2 HOUR) AS MH
, DATE_ADD(NOW(), INTERVAL 5 DAY) AS PD
, DATE_ADD(NOW(), INTERVAL -5 DAY) AS MD
FROM DUAL;
DATE_SUB(NOW(), INTERVAL 2 HOUR) 와 DATE_SUB(NOW(), INTERVAL -2 HOUR) 는 같은 뜻이다.
실행
SELECT
NOW() AS N
, DATE_SUB(NOW(), INTERVAL 2 HOUR) AS PH
, DATE_SUB(NOW(), INTERVAL -2 HOUR) AS MH
, DATE_SUB(NOW(), INTERVAL 5 DAY) AS PD
, DATE_SUB(NOW(), INTERVAL -5 DAY) AS MD
FROM DUAL;
mariaDB 날짜관련 함수 모음 정리 (feat. 날짜포멧, 현재날짜등)
mariaDB 날짜관련 함수 모음 정리
최근 mariaDB를 사용 할 일이 많아졌다. 그러다가 아주 간단한 날짜형식같은 것들도 까먹는 경우가 생겨서 매번 찾아보기 귀찮아서 이렇게 정리를 한다. 막 기억이 안나서 SUBSTR같은 함수로 잘라서 사용하는 지저분한 쿼리 말고 될수있으면 지원되는 함수를 사용하여 최대한 깔끔한 쿼리를 작성하는 방향으로 연습하자.
CURRENT_DATE, CURDATE()
현재 년월일을 출력한다. CURRENT_DATE 같은 경우 괄호가 필요없으며 CURDATE()의 경우 괄호가 필요하다. 둘다 출려되는 내용은 같다. 조금이라도 길이가 짧은 CURDATE()를 대부분 선호하는 편이다.
특정한 포멧을 지정하지 않으면 y-m-d 가 기본 포멧이다.
CURRENT_TIME, CURTIME()
현재 시분초를 출력한다. CURRENT_TIME 같은 경우 괄호가 필요없으며 CURTIME()의 경우 괄호가 필요하다. 둘다 출려되는 내용은 같다. 조금이라도 길이가 짧은 CURTIME()를 대부분 선호하는 편이다.
특별한 포멧을 지정하지 않으면 h:m:s 가 기본 포멧이다.
NOW()
현재 년월일시분초 를 출력한다. CURDATE() + CURTIME() 이라고 생각해도 된다.
특별히 현재년월일을 출력하거나 현재시분초를 출력하는 것이 아니라면 NOW()를 사용하는 편이 입맛에 맞게 변환하기가 좋다.
YEAR(), MONTH(), DAY()
기준날짜에서 YEAR() 는 년도, MONTH() 는 월, DAY는 일을 표기한다. 예시로 NOW()를 기준으로 뒀는데, 만약 20221231이 기준이라면 YEAR() == 2022, MONTH() == 12, DAY() == 31 을 출력해 줄것이다.
DATE_ADD()
특정 날짜를 더하거나 뺄때 사용한다. 사용법은 아주 간단해서 숫자를 입력하고 뒤에 년월일 시분초 를 입력하면 입력한 만큼의 기간을 계산해서 보여준다. 기간별 검색이나 특정 구간의 날짜만 검색할때 아주 유용하게 쓰인다.
DATE_SUB()
DATE_ADD()와 반대로 표기한 숫자만 큼 뺀다.
DATE_SUB(NOW(), INTERVAL 2 HOUR) 와 DATE_SUB(NOW(), INTERVAL -2 HOUR) 는 같은 뜻이다.
DAY, DAYOFWEEK()
DAY는 기준년월일에서 일을 가져오고 DAYOFWEEK()은 기준월에 속해있는 주간이 몇개나 되는지 출력한다.
이 글을 작성한 날짜가 2022년 07월 01일인데 7월의 경우 총 6주차까지 있다. 달력을 만드는 쿼리나 주차계산하는 쿼리를 작성할때 매우 유용하다.
WEEKDAY()
위에 작성했던 DAYOFWEEK()와 같은 역할을 하지만 차이점은 DAYOFWEEK()은 일요일부터 시작하는 반면, WEEKDAY()의 경우 한주의 시작이 월요일부터 시작이다.
DAYOFYEAR()
기준날짜가 해당 연도의 몇일째 인가 출력할때 사용한다. 날짜계산할때 편하게 사용 할 수있다.
QUARTER()
1년을 4쿼터로 나눠서 기준날짜가 몇번째 분기인지 표시할 수있다. 표기된 날짜가 몇번째 분기인지 표기해준다.
예) 1,2,3월 == 1분기, 4,5,6월 == 2분기, 7,8,9월 == 3분기, 10,11,12월 == 4분기
HOUR(), MINUTE(), SECOND()
입력된 시분초에서 순서대로 시간, 분, 초를 따로 출력할수있다. 만약 특정한 포멧이 지정되지 않는다면 24시표기 형태로 출력이 된다.
DATE_FORMAT()
출력되는 년월일시분초의 형태를 지정 할수있다.
예시로 표기한 것외에도 매우 다양한 형태로 표기 할수있으니 자세한 내용은 링크된 페이지에서 확인하도록 하자.
https://mariadb.com/kb/en/date_format/
DATE_FORMAT
Formats the date value according to the format string.
mariadb.com
사실상 내가 생각한 모든 형태로 년월일시분초 표기가 가능하다.
MONTHNAME(), DAYNAME(),DAYOFMONTH()
입력된날짜의 요일이름, 월이름 날짜를 구할 수있다.
이상 아주 간단하게 mariaDB에서 사용되는 날짜관련 함수에 대해 알아보았다.
쿼리를 조금이라도 만졌던 사람이라면 간단하게 알수있는 내용이지만 갑작스럽게 생각 안나는 순간들이 있으니 그때를 대비하여 기록한다.
'SQL' 카테고리의 다른 글