> 데이터 베이스 > MySQL 튜토리얼 > PostgreSQL에서 타임스탬프를 5분 간격으로 효율적으로 자르는 방법은 무엇입니까?

PostgreSQL에서 타임스탬프를 5분 간격으로 효율적으로 자르는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-03 21:02:10
원래의
959명이 탐색했습니다.

How to Efficiently Truncate Timestamps to 5-Minute Intervals in PostgreSQL?

PostgreSQL에서 타임스탬프를 5분 간격으로 효율적으로 자르기

타임스탬프를 특정 경계로 자르는 것은 데이터베이스 처리에서 자주 사용되는 작업입니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿