타임스탬프를 특정 경계로 자르는 것은 데이터베이스 처리에서 자주 사용되는 작업입니다. Postgres의 경우 date_trunc 함수는 타임스탬프를 시간 또는 분으로 반올림하는 간단한 방법을 제공합니다. 그러나 가장 가까운 5분 간격으로 자르려면 더욱 맞춤화된 접근 방식이 필요합니다.
간단한 접근 방식
5분 간격으로 자르는 일반적인 솔루션은 date_trunc를 다음과 결합하는 것입니다. 정수 나누기와 곱셈 작업:
date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
대체 방법
타임스탬프를 5분 간격으로 자르는 두 가지 대체 방법이 있습니다.
방법 1: 시대 산술
이 방법은 타임스탬프를 epoch/unix 시간으로 변환하고 가장 가까운 5분 간격으로 반올림한 다음 다시 타임스탬프로 변환하여 계산합니다. 다음 쿼리는 이 접근 방식을 보여줍니다.
SELECT to_timestamp( floor(EXTRACT(epoch FROM ht.time) / EXTRACT(epoch FROM interval '5 min')) * EXTRACT(epoch FROM interval '5 min') ) FROM huge_table AS ht
방법 2: date_trunc 및 date_part
이 방법은 간단한 접근 방식과 유사하지만 date_trunc 및 date_part를 별도로 사용합니다. 반올림을 달성합니다. 다음 쿼리는 이 방법을 보여줍니다.
SELECT date_trunc('hour', ht.time) + date_part('minute', ht.time)::int / 5 * interval '5 min' FROM huge_table AS ht
성능 비교
대형 테이블에 대한 성능 테스트에서는 간단한 접근 방식이 두 가지 대체 방법보다 성능이 더 뛰어난 것으로 나타났습니다. 결과는 다음과 같습니다.
Method | Run 1 (seconds) | Run 2 (seconds) | Run 3 (seconds) |
---|---|---|---|
Epoch Arithmetic | 39.368 | - | 39.526 |
date_trunc and date_part | 34.189 | - | 37.028 |
결론
대체 방법은 어느 정도 다양성과 단순성을 제공하지만 date_trunc 및 date_part를 사용하는 간단한 접근 방식은 타임스탬프를 자르는 가장 빠른 솔루션을 제공합니다. Postgres에서는 5분 간격으로.
위 내용은 PostgreSQL에서 타임스탬프를 5분 간격으로 효율적으로 자르는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!