Categories: 개발

[MySQL/Maria] 자주쓰이는 DATE Query

ADDDATE (날짜 더하기/빼기)

먼저, 가장 자주 쓰게 되는 쿼리로 날짜 더하기/빼기 입니다.
ADDDATE 혹은 DATE_ADD 를 사용합니다.

year
month
day
일 더하기
select adddate(now(),interval 1 day);
일 빼기
select adddate(now(),interval -1 day);
달 더하기
select adddate(now(),interval 1 month);
달 빼기
select adddate(now(),interval -1 month);
년 더하기
select adddate(now(),interval 1 year);
년 빼기
select adddate(now(),interval -1 year);

개발 하실때 주의하실 점 한가지 말씀드리 year 입니다.
뭐를 주의해야하냐구요..?
바로 윤달 입니다.

2020년은 윤달이 있는 해로서 2월 29일이 있는데요.

select adddate('2020-02-28', interval 1 year);
결과 : 2021-02-28
select adddate('2020-02-29', interval 1 year);
결과 : 2021-02-28

2020년처럼 윤달이 있는 해 일때 1 년을 더하면 28일로 동일한 결과가 나옵니다.
이러한 결과는 배치나 이런 곳에서 사용될때 28일로 2번 조건이 동일해지니 고민해야할 부분입니다.

년/월/일을 계산했다면 당연히 시/분/초도 가능합니다.

hour
minute
second
시간 더하기
select adddate(now(),interval 1 hour);
시간 빼기
select adddate(now(),interval -1 hour);
분 더하기
select adddate(now(),interval 1 minute);
분 빼기
select adddate(now(),interval -1 minute);
초 더하기
select adddate(now(),interval 1 second);
초 빼기
select adddate(now(),interval -1 second);

DATE_FORMAT(날짜 커스텀)

날짜 타입을 원하는 포맷으로 변경할때는 DATE_FORMAT 을 사용합니다.
2023년 11월 27일 14시 10분 20초 기준 입니다.

표현식결과
%Y / %y2023 / 23
%M / %mNovember / 11
%D / %d27th / 27
%H / %h14 / 02
%i10
%s20
마이크로%f0000
시:분:초%T14:10:20
select date_format(now(),'%Y-%m-%d %T)
결과: '2023-11-27 14:10:20'

원하는 형태로 날짜 포맷을 변경해서 사용하시면 됩니다.

STR_TO_DATE(날짜 타입으로 형 변환)

위에 예시에서는 다 now()를 썼지만 우리가 원하는 날짜를 사용해야할 경우도 있죠.
그럴 경우에는 STR_TO_DATE 를 사용합니다.
기본적으로 포맷은 년-월-일 시:분:초 형태로 사용하시면 됩니다.

그런데 현재는 버전이 오르면서 편의를 위한건지 그냥 문자로 포맷만 맞춰줘도 날짜 타입으로 변경이 되네요.

기본 방식
select adddate(str_to_date('2023-01-01 14:10:20','%Y-%m-%d %T'),interval 1 day);
새로운 방식
select adddate('2023-01-01 14:10:20',interval 1 day);

기본적으로 DATE 타입이어야 adddate 와 같은 함수가 적용이 되는데
그냥 포맷만 맞춰주면 되나봅니다. 이건 버전에 따라 안될수도 있습니다.

mana

Recent Posts

[여행] 1박 2일 경주 뚜벅이 여행기

경주시티투어 이번 여행에 앞서 뚜벅이 여행객들에게 추천하는게 바로 경주시티투어 이다. 경주시티투어 사이트로이동 경주시티투어는 여러가지가 있다.1.…

8개월 ago

[공공데이터] 공공 API 사용하기 – 지하철 실시간 도착 정보

열린데이터 광장 공공데이터 사이트로 이동 서울 열린데이터 광장에서는 서울에 관한 여러가지 공공 API 를 제공한다.그…

8개월 ago

[Vue] Props 와 Emit – 부모 함수 사용하기

Props props 는 쉽게 생각해서 부모가 자식에게 주는 데이터이다.먼저 부모에게 물려받을 데이터를 자식 컴포넌트에 정의한다.…

8개월 ago

이자 계산기

이번에는 이자 계산기 사이트를 만들어봤습니다. 이자 계산기 바로가기 vue로 하다보니 금액이나 이자율 같은 input 태그의…

8개월 ago

[SpringBoot+Nginx+vite]유틸 사이트를 만들어봤습니다.feat.핫딜 모음

유틸 사이트로 이동 웹사이트 개설 나의 블로그의 접속자 수는 처참하지만 내가 블로그를 시작하면서생각했던 계획은 내…

9개월 ago

[GitHub] Actions로 서버에 자동배포하기

과정 시작하기에 앞서 과정부터 설명해드리겠습니다.master branch에 push 가 되면 GitHub Actions 에서소스를 build 를 하고…

9개월 ago