본문 바로가기

SQL

글 작성 지난 시간 표시 (Display Post Last Edited Time)

최근에 작업 중에 알림기능을 덤으로 추가해볼까 하다가, 문득 Facebook의 알림이 생각났다.

매번 알림오는 것을 보면서, 저것을 어떻게 만들었을까를 한번 도 생각해 보지 않았었는데..

이렇게 만들고 나서 남겨보려고 한다.

 

설명을 위한 예시 그림(Facebook 참조)

제가 하려고 하는것은 파란(blue)글씨로 노출 중인 (약 1시간전, 3일전, 4일전...) 요런 걸 만드는 쿼리입니다.

 

쿼리는 Microsoft Sql Server로 작성되었습니다.

 

[쿼리]

SELECT  '맥도날드(McDonald\''s)' MENU,'님이 릴스를 공유했습니다.' TITLE,
CASE
    WHEN DATEDIFF(second, InquiryDate, GETDATE()) < 60 THEN CAST(DATEDIFF(second, InquiryDate, GETDATE()) AS VARCHAR) + ' seconds ago'
    WHEN DATEDIFF(minute, InquiryDate, GETDATE()) < 60 THEN CAST(DATEDIFF(minute, InquiryDate, GETDATE()) AS VARCHAR) + ' minutes ago'
    WHEN DATEDIFF(hour, InquiryDate, GETDATE()) < 24 THEN CAST(DATEDIFF(hour, InquiryDate, GETDATE()) AS VARCHAR) + ' hours ago'
    ELSE CAST(DATEDIFF(day, InquiryDate, GETDATE()) AS VARCHAR) + ' days ago'
  END AS agoTime
  FROM [TABLE NAME]
  UNION ALL
  SELECT  'Visit Queensland, Austraila' MENU,'님이 릴스를 공유했습니다.' TITLE,
CASE
    WHEN DATEDIFF(second, ApplicantDate, GETDATE()) < 60 THEN CAST(DATEDIFF(second, ApplicantDate, GETDATE()) AS VARCHAR) + ' seconds ago'
    WHEN DATEDIFF(minute, ApplicantDate, GETDATE()) < 60 THEN CAST(DATEDIFF(minute, ApplicantDate, GETDATE()) AS VARCHAR) + ' minutes ago'
    WHEN DATEDIFF(hour, ApplicantDate, GETDATE()) < 24 THEN CAST(DATEDIFF(hour, ApplicantDate, GETDATE()) AS VARCHAR) + ' hours ago'
    ELSE CAST(DATEDIFF(day, ApplicantDate, GETDATE()) AS VARCHAR) + ' days ago'
  END AS agoTime
  FROM [TABLE NAME]

[결과화면]

쿼리(Query) 실행결과

 

이 기능을 본지 엄~청 오래되었는데, 이제야 만들어보네요, 좀 더 분발해야 겠습니다.

감사합니다.

'SQL' 카테고리의 다른 글

[SQL]WHERE 조건에 CASE WHEN 사용하기  (0) 2023.10.23