DA Study/TIL

[TIL] 날짜 구하기(datetime, date) #SQL #SQLite #solvesql

harrym8n 2025. 2. 12. 14:55

solvesql - 3년간 들어온 소장품 집계하기
👉 문제 바로가기(solvesql)

-- 오늘보다 내일의 미세먼지 농도가 더 심한 데이터 추출
-- 오늘,내일, 오늘 미세먼지 농도, 내일 미세먼지 농도 조회

SELECT
  t1.measured_at as today,
  t2.measured_at as next_day,
  t1.pm10,
  t2.pm10 as next_pm10
FROM
  measurements t1,
  measurements t2    
WHERE
  DATE(t1.measured_at, '+1 days') = t2.measured_at AND
  t1.pm10 < t2.pm10

[ 논리 과정 ]

  1. 주어진 테이블의 measured_at에 1일을 더해 해당 테이블(measurement)의 measured_at과 Inner Join 한다.
  2. 본 테이블이 오늘, 1일을 더하여 생성한 테이블이 내일이 된다.
  3. 각 테이블의 measured_at 컬럼과 pm10 컬럼을 조회한다.

[ 문제 상황 ]

  • 특정되지 않은 임의의 날의 다음날을 구해야 한다.

[ 해결 ]

  • date(타임스탬프, '+1 days') 함수로 1일을 더해준다.
  • '+1 days' 자리에 부호와 숫자를 바꿔주면 원하는 일수만큼 가감이 가능하다.
  • DATE 함수말고 다른 포맷팅 함수를 사용하면 원하는 포맷팅으로 결과가 도출된다.

[ 회고 ]

  • datet를 활용한 날짜 가감 방법을 알게되었다.
  • datet말고 다른 날짜 형식 포맷팅 함수들을 사용할 수도 있다.(DATETIME : 타임스탬프, TIME : 'HH:MM:SS' 등)