YS's develop story

MySQL ) AS활용 , LEFT JOIN 활용 , timestampdiff, current_timestamp() 활용 정리 본문

Database/MySQL

MySQL ) AS활용 , LEFT JOIN 활용 , timestampdiff, current_timestamp() 활용 정리

Yusang 2021. 1. 27. 10:03

MySQL문법은 처음이기에....

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

 

Comments