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문에서 많은 로직이 들어가기보다는, 코드로 풀어내는 것도 좋은 방법이라고 생각
- 데이터베이스를 바꿀 때, 너무 데이터베이스 종속적이면 확장에 어렵기 때문