알고리즘/My SQL

[My SQL] 시간 연산자 , 날짜 연산자

Judith Hopps 2023. 2. 10. 15:08
반응형

날짜 관련 함수들

 

현재 날짜 

CURRENT_DATE, CURDATE 현재 날짜 반환
CURRENT_TIME, CURTIME 현재 시간 반환
CURRENT_TIMESTAMP, NOW 현재 시간과 날짜 반환

날짜 생성

DATE 문자열에 따라 날짜 생성
TIME 문자열에 따라 시간 생성
YEAR 주어진 DATETIME값의 년도 반환
MONTHNAME 주어진 DATETIME값의 월(영문) 반환
MONTH 주어진 DATETIME값의 월 반환
WEEKDAY 주어진 DATETIME값의 요일값 반환(월요일: 0)
DAYNAME 주어진 DATETIME값의 요일명 반환
DAYOFMONTHDAY 주어진 DATETIME값의 날짜(일) 반환
SELECT car_id, if(sum(if('2022-10-16' between start_date and end_date, 1, 0))>0, 
'대여중', '대여 가능') as AVAILABILITY

from CAR_RENTAL_COMPANY_RENTAL_HISTORY 
group by car_id
order by car_id desc

날짜 연산

ADDDATE, DATE_ADD 시간/날짜 더하기
SUBDATE, DATE_SUB 시간/날짜 빼기

날짜 차이

DATE_DIFF 두 시간/날짜 간 일수차(+1하기)
SELECT HISTORY_ID, CAR_ID, 
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE, 
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,

IF(DATEDIFF(END_DATE, START_DATE) + 1 >= 30, '장기 대여','단기 대여') AS RENT_TYPE


FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE, '%Y-%m') = '2022-09'
ORDER BY HISTORY_ID DESC;
-- 코드를 입력하세요
SELECT CAR_ID	,ROUND(
    AVG(DATEDIFF(END_DATE,START_DATE)+1) ,1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY

GROUP BY CAR_ID HAVING  AVG(DATEDIFF(END_DATE,START_DATE)+1) >=7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
LAST_DAY 해당 달의 마지막 날짜

 

문자열에서 DATE로 변환

STR _ TO _ DATE(S, F) S를 F형식으로 해석하여 시간/날짜 생성

시간 관련 함수들

 

시간 연산자

 

CURRENT_TIME, CURTIME 현재 시간 반환
TIME 문자열에 따라 시간 생성
 

 

HOUR 주어진 DATETIME의 시 반환
MINUTE 주어진 DATETIME의 분 반환
SECOND 주어진 DATETIME의 초 반환
SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 19
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)
TIME_DIFF 두 시간/날짜 간 시간차
%T hh:mm:ss
%r hh:mm:ss AM/PM
%H, %k 시 (~23)
%h, %l 시 (~12)
%i
%S, %s
%p AM/PM
반응형