home

오프셋과 날짜

  • SQL의 오프셋(offset)은 쿼리 결과에서 특정 위치의 행부터 데이터를 가져오기 위해 사용
  • 예를 들어 LIMIT 100 OFFSET 100을 사용하면 100번째 데이터부터 100개를 가져온다.
  • 이러한 특징을 통해서 페이지네이션도 구현 가능하다.
  • 가장 잘 쓰이는 것은 배치 처리(Batch Processing) 일 것 같다.
    • 데이터 처리를 여러 배치로 나누어 수행할 때, OFFSET을 사용해 각 배치의 시작 위치를 지정
    • 대량의 데이터를 처리할 때 한 번에 모든 데이터를 처리하지 않고, 일정량씩 나누어 처리
      -- 첫 번째 배치
      SELECT * FROM transactions ORDER BY id LIMIT 1000 OFFSET 0;
    
      -- 두 번째 배치
      SELECT * FROM transactions ORDER BY id LIMIT 1000 OFFSET 1000;
    

범용적인 시간 계산

  • 날짜 더하기
      SELECT DATE_ADD('2024-06-13', INTERVAL 1 DAY) AS new_date;
    
  • 날짜 빼기
      SELECT DATE_SUB('2024-06-13', INTERVAL 1 DAY) AS new_date;
    
  • 날짜 차이
      SELECT DATEDIFF('2024-06-13', '2023-06-13') AS days_difference;
    
  • 시간 필터링
      SELECT * FROM orders WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);
    
  • 날짜 형식 변환
      SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date FROM orders;
    
  • 시간 차이 알아내기
      SELECT TIMESTAMPDIFF(HOUR, '2024-06-13 08:00:00', '2024-06-13 12:00:00')hours_difference;
    
  • 개인적으로는 SQL문에서 많은 로직이 들어가기보다는, 코드로 풀어내는 것도 좋은 방법이라고 생각
  • 데이터베이스를 바꿀 때, 너무 데이터베이스 종속적이면 확장에 어렵기 때문