현재를 기준으로 조회
현재 날짜와 시간을 조회하기 now()
SELECT now();
localtime = 한국 (KST) UTC+9시간이 아닌 UTC 세계 표준 시간 기준 현재 날짜와 시간이 나옵니다.
UTC란?
전 세계적으로 통일된 시간 기준을 제공하며
컴퓨터 시스템과 서버 간의 시간 동기화, 네트워킹에서 데이터 기록, 로그 관리, 시간 동기화 등에 필수적으로 사용됩니다.
UTC는 ISO 8601 표준에 따라 날짜와 시간을 표현하는 데 사용되며,
"2023-12-24T15:00:00Z"와 같은 형식으로 나타낼 수 있습니다. 여기서 'Z'는 UTC를, 'T'는 날짜와 시간을 구분합니다.
TimeStamp 에선 YYYY-MM-DD HH:MM:SS 로 반환됩니다.
현재 날짜만 조회 curdate()
SELECT curdate();
현재 시간만 조회 curtime()
SELECT curtime();
날짜데이터의 특정 값 가져오기
order 테이블에서 order_date의 년도만 가져오세요. year()
SELECT YEAR (order_date )
FROM orders o ;
같은 원리로 아래 함수도 사용 가능!
월 Month(), 일 day(), 시간 hour(), 분 minute(), 초 second()
날짜 차이 계산하기
두 날짜간 차이 계산 datediff()
SELECT *,DATEDIFF(delivery_date,order_date) as delivery_days
FROM orders o ;
두 시간간의 차이 계산 timediff()
SELECT *,TIMEDIFF('2023-10-05 15:00:00',order_date)as diff
from orders o ;
-- 주문일로부터 3일 후의 날짜를 구하세요.
SELECT order_date,date_add(order_date,INTERVAL 3 DAY)
FROM orders o ;
INTERVAL 키워드 :
추가되는 값이 단순한 숫자가 아닌 시간 간격임을 명확히 함
interval 3 DAY 처럼 interval 키워드와 숫자, 간격단위에 각각 공백이 필요함
DAY는 소문자 아닌 대문자로 쓰는것을 권장
ADDDATE()와 DATE_ADD()의 차이는?
기본 기능: 두 함수 모두 날짜에 시간 간격을 더하는 데 사용됩니다.
DATE_ADD()
단일 구문만 지원 INTERVAL 키워드 필수!
DATE_ADD(date, INTERVAL expr unit)
ADDDATE()
ADDDATE 함수는 INTERVAL 키워드를 사용하지 않고도 날짜에 간격을 추가할 수 있습니다. 숫자=DAY
ADDDATE(date, INTERVAL expr unit)
-- 08/01/02에 31일을 더합니다.
ADDDATE(expr, days)
SELECT ADDDATE('2008-01-02', 31);
-- 2일전의 날짜는?
SELECT date_sub(order_date,INTERVAL 2 DAY)
FROM orders o ;
DATEDIFF()와 DATE_SUB()의 차이는?
DATE_SUB() | DATEDIFF() |
주어진 날짜에서 특정 기간을 뺀 새로운 날짜를 반환합니다 | 두 날짜 사이의 차이를 일 수로 계산합니다 |
DATE_SUB(date, INTERVAL value interval) | DATEDIFF(date1, date2) |
DATE_SUB(NOW(), INTERVAL 1 DAY)는 현재 날짜에서 1일을 뺀 날짜를 반환합니다 |
DATEDIFF('2019-07-27', activity_date)는 '2019-07-27'과 activity_date 사이의 일 수 차이를 반환합니다 |
Group by로 날짜데이터를 그룹화 하여 불러올 수도 있다!

주 당 주문건수 확인
SELECT week(order_date), count(*)
FROM orders o
group by week(order_date) ;
월 당 주문건수 확인
SELECT month(order_date), count(*)
FROM orders o
group by month(order_date) ;
시간 당 주문건수 확인, order by로 정렬도 가능!
SELECT HOUR(order_date)as hour, count(*) as cnt
from orders o
group by hour(order_date)
order by hour asc;