-
시간 함수 문제 풀이- 숙지 후 정리 예정🐬 MySQL/MySQL 함수 2024. 12. 2. 11:32728x90
주문이 이루어진 날짜와 요일 조회
각주문의 날짜와 요일(한글) 정보를 조회하세요SELECT *,month(order_date) as oder_month
FROM orders o ;
월별 주문 수 조회
각 월별로 이루어진 주문량을 조회하세요
특정 월의 주문 내역 조회
12월에 이루어진 주문 내역을 조회하세요
주문과 배송 날짜 간의 일수 차이 계산
각 주문에 대해 주문일과 배송일 사이의 일수 차이를 계산하여 조회하세요.
하루 안에 처리된 주문 조회
주문일과 배송일이 동일한, 죽 하루안에 처리된 주문들을 조회하세요
가장 최근에 이루어진 주문 조회
가장 최근에 이루어진 주문의 정보를 조회하세요
평일과 주말 구분하여 주문 조회
각 주문이 평일에 이루어졌는지 주말에 이루어졌는지를 구분하여 조회하세요
(평일 또는 주말로 표시)
배송 예정인 주문 조회
주문일을 기준으로 정확히 4일 후에 배송이 예정된 주문 내역을 조회하세요
특정 시간대(오전/오후)에 이루어진 주문 조회
오전(00:00-15:59) 과 오후(12:00-223:59) 에 이루어진 주문들을 구분하여 조회하세요
이 컬럼명은 order_period로 하세요
배송 예정일이 임박한 주문 조회
오늘 기준으로 앞으로 3일 이내에 배송이 예정된 주문들을 조회하세요-- 현재 날짜와 시간을 조회하는 함수 : now()
-- now()안에 아무것도 넣지 않으면 서버가 시간이 나온다 (AWS 서버 시간)
-- UTC : 서버는 기준점이 정확한 UTC를 기준으로 진행 된다
-- Localtime
-- 연 월 일 시 분 초
SELECT now();
-- 현재 날짜만 조회 : curdata()
SELECT CURDATE();
-- 현재 날짜만 조회 : curdata()
SELECT CURtime();
-- orders 테이블에서 order_date 에서 년도만 가져오시오.yesr()
SELECT *,year(order_date)
FROM orders o ;
-- orders 테이블에서 order_date 에서 월 정보만 가져오시오.month()
SELECT *, month(order_date )
FROM orders o ;
-- orders 테이블에서 order_date 에서 일 정보만 가져오시오.day()
SELECT *, day(order_date )
FROM orders o ;
-- orders 테이블에서 order_date 에서 주 정보만 가져오시오.day()
SELECT *, week(order_date )
FROM orders o ;
-- orders 테이블에서 order_date 에서 시 정보만 가져오시오.hour()
SELECT *, hour(order_date )
FROM orders o ;
-- orders 테이블에서 order_date 에서 분 정보만 가져오시오. minute()
SELECT *, minute(order_date )
FROM orders o ;
-- orders 테이블에서 order_date 에서 초 정보만 가져오시오.second()
SELECT *, second(order_date )
FROM orders o ;
-- 두 날자간의 차이 계산 : datediff()
-- 주문일과 배송일의 차이를 계산해보자
SELECT *, DATEDIFF(delivery_date,order_date) as diff
FROM orders o ;
-- 시간차이 계산 : timediff()
SELECT *, TIMEDIFF(delivery_date,order_date) as diff
FROM orders o ;
SELECT *, TIMEDIFF('2023-10-05 15:00:00',order_date) as diff
FROM orders o ;
SELECT *
FROM orders o ;
SELECT TIMEDIFF(delivery_date, order_date)
from orders;
-- 현재시간과 물건 구매일자를 비교해서 알려주려면 'now'
SELECT *, TIMEDIFF('now',order_date) as diff
FROM orders o ;
-- 주문일로부터 3일 후의 날짜를 구하시오
-- 푸쉬알람
SELECT order_date,
DATE_ADD(order_date, INTERVAL 3 day)
from orders o ;
-- 주문일로부터 2일 전의 날자를 구하시오.
-- 실 사용예 : 푸쉬알림 ( 주문한지 2이 지났습니다.)
SELECT DATE_SUB((order_date, INTERVAL 2 day)
from orders o ;
-- 주간 집계
-- 특정일자의 주문은 몇건인가? , 이번주의 주문은 몇건인가? ,
-- 각주별로 테이터 묶기 > 년월일 시간 분 초가 기재되어 있다. 그렇게 그룹을 묶을
SELECT *, count(*)
FROM orders
group by week(order_date);
-- 시간별로 묶어라
SELECT hour(order_date), count(*) as cnt
FROM orders
group by hour(order_date);
SELECT hour(order_date), count(*) as cnt
FROM orders
group by hour(order_date)
order by hour asc;
-- 오더 데이트를 기준으로 요일을 표기해줘
SELECT *, DAYNAME(order_date)
from orders o ;
-- 오더 데이트 기즌으로 한글요일을 표시해줘
SELECT *, DAYNAME(order_date)
case dayname(oder_date)
when 'sunday' then '일요일'
WHEN 'monday'then '월요일'
ELSE
end
from orders o
group by hour(order_date)
order by hour asc;
-- 요일을 숫자로 알려주는 방식
SELECT *, DAYOFWEEK(order_date)
from orders o ;
-- 오류발생.. 집에서 한번 해보자
SELECT order_date,
case DAYOFWEEK(order_date)
when 1 then '일요일'
when 2 then '월요일'
when 3 then '화요일'
when 4 then '수요일'
when 5 then '목요일'
when 6 then '금요일'
when 7 then '토요일'
END as wookday
from orders o ;
-- 월별 주문 수 조회
-- 각 월별로 이루어진 주문량을 조회하세요
SELECT MONTH(order_date),count(*)
FROM orders o
group by MONTH(order_date) ;
-- 특정 월의 주문 내역 조회
-- 12월에 이루어진 주문 내역을 조회하세요
SELECT *
FROM orders o
WHERE MONTH (order_date) = 12;
-- 주문과 배송 날짜 간의 일수 차이 계산
-- 각 주문에 대해 주문일과 배송일 사이의 일수 차이를 계산하여 조회하세요.
방법 1
SELECT *, DATEDIFF(delivery_date,order_date) as date_diff
from orders o having date_diff=0;
방법 2
SELECT *
FROM orders o
WHERE date (order_date) = date(delivery_date);
-- 하루 안에 처리된 주문 조회
-- 주문일과 배송일이 동일한, 죽 하루안에 처리된 주문들을 조회하세요
SELECT *
FROM orders o
WHERE date(order_date) = delivery_date
-- 가장 최근에 이루어진 주문 조회
-- 가장 최근에 이루어진 주문의 정보를 조회하세요
SELECT max(order_date )
FROM orders o ;
-- sub query
SELECT *
FROM orders o
WHERE order_date = (SELECT max(order_date )
FROM orders o)
-- 평일과 주말 구분하여 주문 조회
-- 각 주문이 평일에 이루어졌는지 주말에 이루어졌는지를 구분하여 조회하세요
-- 요일을 가져오는 방법, dayofweek, dayname weekday(구분 잘 해야함)
-- (평일 또는 주말로 표시)
-- 요일 정보 먼저 추출 후 평일과 주말 구분
SELECT *,
case DAYOFWEEK(order_date)
when 1 then '일요일'
when 2 then '월요일'
when 3 then '화요일'
when 4 then '수요일'
when 5 then '목요일'
when 6 then '금요일'
when 7 then '토요일'
end
FROM orders o ;
답
SELECT*,
if(DAYNAME(order_date)='sunday' or dayname(order_date)='saturday','주말','평일')
FROM orders o ;
SELECT*,
if(DAYofweek(order_date)=1 or DAYofweek(order_date)=7,'주말','평일')
FROM orders o ;
SELECT*,
if(weekday(order_date) < 5,'주말','평일')
FROM orders o ;
-- 배송 예정인 주문 조회
-- 주문일을 기준으로 정확히 4일 후에 배송이 예정된 주문 내역을 조회하세요
-- 눈으로 먼저 확인하고(selete) 잘되면 where 에 가져와라
SELECT *,DATE_ADD(date(order_date),INTERVAL 4 day)
from orders o
WHERE DATE_ADD(date(order_date),INTERVAL 4 day) = delivery_date ;
-- 특정 시간대(오전/오후)에 이루어진 주문 조회
-- 오전(00:00-15:59) 과 오후(12:00-223:59) 에 이루어진 주문들을 구분하여 조회하세요
-- 이 컬럼명은 order_period로 하세요
SELECT *, if(HOUR (order_date) < 12, '오전','오후')
FROM orders o ;
-- 배송 예정일이 임박한 주문 조회
-- 오늘 기준으로 앞으로 3일 이내에 배송이 예정된 주문들을 조회하세요
-- 오늘 날짜만 가져오는것
SELECT curdate;
-- 오늘 날짜에서 3일 더한것
SELECT date_add(CURDATE(), INTERVAL 3 day);
-- 오늘 날짜 와 3일후 날짜의 데이터 비교
SELECT CURDATE(),date_add(CURDATE(), INTERVAL 3 day);
SELECT *
FROM orders o
WHERE delivery_date >= CURDATE() and delivery_date <= date_add(CURDATE(), INTERVAL 3 day)
SELECT *
FROM orders o ;
INSERT INTO orders (customer_name,product_name,order_date,delivery_date)
values ('홍길동','의자','2024-12-01 13:30:00', '2024-12-03');
-- 주문일 기준 4일후 도착되는 날짜를 전부 구한식
SELECT *,DATE_ADD(date(order_date),INTERVAL 4 day)
from orders o;
728x90'🐬 MySQL > MySQL 함수' 카테고리의 다른 글
SQL에서 시간을 다루는 함수들: NOW(), CURDATE(), TIMEDIFF() 등 알아보기 (0) 2024.11.29 [함수] 숫자 함수 관련 - 아직 미숙 (정리예정) (0) 2024.11.29 SQL COUNT()로 데이터 분석 시작하기 : 숫자 세기 (0) 2024.11.28 SQL CONCAT() 활용법 : 데이터 조합의 핵심 도구 (1) 2024.11.27 SQL CHAR_LENGTH() 함수: 초보자도 쉽게 이해하는 문자열 길이 측정 (0) 2024.11.27