YS's develop story
MySQL ) AS활용 , LEFT JOIN 활용 , timestampdiff, current_timestamp() 활용 정리 본문
MySQL ) AS활용 , LEFT JOIN 활용 , timestampdiff, current_timestamp() 활용 정리
Yusang 2021. 1. 27. 10:03MySQL문법은 처음이기에....
as, left join, timestampdiff 및 case when, current_timestamp()를
활용한 내용을 나중에 기억하기 위해 정리해 봤습니다.
As 활용
as를 활용해서 Event라는 테이블을 s로 지정하고 보다 간결하게 쿼리를 작성할 수 있습니다.
LEFT JOIN 활용
Join 문을 활용하여 Evnet테이블과 newCafe테이블의 정보를 한 번에 제공하도록 할 수 있습니다.
where은 eventIsDeleted = 'N'인 테이블만 표시하겠다는 조건문입니다.
Join문을 아래와 같이 여러 개 사용할 수도 있습니다.
timestampdiff 및 current_timestamp() 활용
2021-01-17시간을 기준으로 지금 시간은 얼마나 흘렀는지 표시를 해주는 쿼리입니다.
case when과 timestampdiff를 활용하여 시간 관련 쿼리 만들기
newCafe의(as를 이용해 l이라고 줄임) timeStamp가 현재 시간을 기준으로,
case when TIMESTAMPDIFF(hour, l.timeStamp, current_timestamp())
시간을 단위로 했을 때 480 이하이면 timeStamp를 '신규 카페'
< 480 then '신규 카페'
아니면 '신규 카페 기간 만료' 라고 표시하고
else '신규 카페 기간만료'
칼럼 이름은 '신규 카페 기간'이라고 표시.
end as '신규 카페 기간'
위 쿼리의 case when 조건에 따르면
제로 월드 강남점은 현재 시간을 기준으로 480을 초과했기 때문에 신규 카페 기간이 만료라고 표시될 것입니다.
직접 확인해 보면 아래와 같이 표시됩니다!!
추가로 하루가 등록 된 시간에 따라
분 전, 시간 전, 일 전, 날짜 표시가 나오도록 하는 쿼리입니다.
CASE
WHEN TIMESTAMPDIFF(HOUR, 시간컬럼, now()) > 23
THEN IF(TIMESTAMPDIFF(DAY, 시간컬럼, now()) > 7, date_format(Review.updatedAt, '%Y-%m-%d'),
concat(TIMESTAMPDIFF(DAY, 시간컬럼, now()), " 일 전"))
WHEN TIMESTAMPDIFF(HOUR, 시간컬럼, now()) < 1
THEN concat(TIMESTAMPDIFF(MINUTE, 시간컬럼, now()), " 분 전")
ELSE concat(TIMESTAMPDIFF(HOUR, 시간컬럼, now()), " 시간 전")
END AS updatedAt
'Database > MySQL' 카테고리의 다른 글
MySQL ) 위도 경도를 활용하여 거리 계산하는 구문 작성하기 (2) | 2021.01.28 |
---|---|
MySQL ) 한글 입력이 가능한 데이터 베이스 생성하기 (0) | 2021.01.27 |
MySQL 에러 ) ERROR 1366 (HY000) : incorrect string value (0) | 2021.01.26 |
MySQL) 테이블 not null -> null 허용가능으로 컬럼 변경하기, alter table (0) | 2021.01.25 |
MySQL ) INSERT INTO문 활용하기 (0) | 2021.01.23 |