PostgreSQL에서 타임스탬프를 5분 간격으로 효율적으로 자르는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다.

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음)

인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)?
