🧚 Escute! O Beekeeper Studio é uma GUI de banco de dados rápida, moderna e open source Baixar
28 de agosto de 2024 Por Matthew Rathbone

Um ‘interval’ no PostgreSQL representa uma duração de tempo. Ele pode ser o resultado da subtração de dois valores TIMESTAMP ou ser definido explicitamente com a palavra-chave INTERVAL.

Veja um exemplo:

SELECT INTERVAL '2 days 3 hours 40 minutes' AS example_interval;

Saída esperada:

example_interval
-------------------
2 days 03:40:00

Extraindo dias, horas e minutos

Extraindo dias

Para extrair o número total de dias de um intervalo:

SELECT EXTRACT(DAY FROM INTERVAL '5 days 4 hours 30 minutes') AS total_days;

Saída esperada:

total_days
------------
5

Extraindo horas

Ao extrair horas, a função EXTRACT retorna apenas o componente de hora do intervalo, e não o total de horas incluindo os dias. Por exemplo:

SELECT EXTRACT(HOUR FROM INTERVAL '2 days 4 hours 30 minutes') AS hours_component;

Saída esperada:

hours_component
-----------------
4

Para obter o total de horas, incluindo os dias, você precisa fazer um pouco de aritmética:

SELECT EXTRACT(DAY FROM INTERVAL '2 days 4 hours 30 minutes') * 24 +
       EXTRACT(HOUR FROM INTERVAL '2 days 4 hours 30 minutes') AS total_hours;

Saída esperada:

total_hours
------------
52

Extraindo minutos

Assim como as horas, extrair os minutos retorna apenas a parte de minutos do intervalo:

SELECT EXTRACT(MINUTE FROM INTERVAL '2 days 4 hours 30 minutes') AS minutes_component;

Saída esperada:

minutes_component
-------------------
30

Para obter o total de minutos do intervalo, você pode calcular:

SELECT (EXTRACT(DAY FROM INTERVAL '2 days 4 hours 30 minutes') * 24 * 60) +
       (EXTRACT(HOUR FROM INTERVAL '2 days 4 hours 30 minutes') * 60) +
       EXTRACT(MINUTE FROM INTERVAL '2 days 4 hours 30 minutes') AS total_minutes;

Saída esperada:

total_minutes
---------------
3150

Exemplos práticos

Vamos ver um exemplo prático usando uma tabela. Suponha que temos uma tabela chamada events que armazena os timestamps de início e fim de vários eventos:

CREATE TABLE events (
    event_id SERIAL PRIMARY KEY,
    start_time TIMESTAMP,
    end_time TIMESTAMP
);

INSERT INTO events (start_time, end_time)
VALUES 
    ('2024-08-01 08:00:00', '2024-08-03 12:30:00'),
    ('2024-08-05 09:15:00', '2024-08-05 18:45:00');

Podemos calcular o intervalo de cada evento e extrair o total de dias, horas e minutos:

SELECT 
    event_id,
    end_time - start_time AS duration,
    EXTRACT(DAY FROM end_time - start_time) AS total_days,
    (EXTRACT(DAY FROM end_time - start_time) * 24 +
     EXTRACT(HOUR FROM end_time - start_time)) AS total_hours,
    (EXTRACT(DAY FROM end_time - start_time) * 24 * 60 +
     EXTRACT(HOUR FROM end_time - start_time) * 60 +
     EXTRACT(MINUTE FROM end_time - start_time)) AS total_minutes
FROM events;

Saída esperada:

event_id |   duration    | total_days | total_hours | total_minutes
---------+---------------+------------+-------------+--------------
       1 | 2 days 04:30  |          2 |          52 |          3150
       2 | 09:30:00      |          0 |           9 |           570

Conclusão

Extrair dias, horas ou minutos de um intervalo no PostgreSQL é simples com a função EXTRACT. Para obter totais, você precisará combinar EXTRACT com operações aritméticas. Essas técnicas são muito úteis para analisar dados baseados em tempo nas suas aplicações.

Outros artigos que você pode gostar:

Beekeeper Studio é um cliente de banco de dados gratuito e open source

A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit

O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.

A versão do Beekeeper para Linux tem 100% dos recursos, sem atalhos e sem concessões.

O que os usuários dizem sobre o Beekeeper Studio

★★★★★
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com SQL. É rápido, intuitivo e torna o trabalho com banco de dados agradável de novo."
— Alex K., Desenvolvedor de Banco de Dados
★★★★★
"Já testei muitas GUIs de banco de dados, mas o Beekeeper encontra o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."
— Sarah M., Engenheira Full Stack

Pronto para melhorar seu fluxo de trabalho com SQL?

download Baixar grátis