PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Entendendo os tipos de data e funções do PostgreSQL (por exemplos)


Neste artigo, veremos como trabalhar com datas no PostgreSQL, incluindo os vários tipos e formatos de dados de data, suas funções e as formas de lidar com elas em sua rotina diária. Usaremos o dbForge Studio para PostgreSQL para ilustrar os exemplos.

Você pode usar datas e carimbos de data/hora para análise e armazenamento de dados, pois eles permitem determinar quando um evento realmente ocorreu. A coisa complicada sobre datas é que seus formatos variam em diferentes países, então pode ser uma tarefa bastante desafiadora para iniciantes em gerenciamento de banco de dados. O tipo de dados e o formato da coluna de data devem sempre ser consistentes com as informações inseridas pelo usuário. Além disso, você deve modificar o formato de data para atender às preferências de seus usuários. O Postgres é capaz de lidar com uma ampla variedade de formatos de dados.

Conteúdo
  • Visão geral do tipo de dados PostgreSQL DATE
  • Usando a data atual como valor padrão
  • Funções do Postgres DATE
  • Usando a função NOW() para obter a data atual
  • Usando a função TO_CHAR() – produza o valor da data em um formato especificado
  • Usando o operador menos para obter o intervalo entre duas datas
  • Usando a função AGE() para obter a diferença de data em anos, meses e dias
  • Usando a função EXTRACT() para obter o ano, trimestre, mês, semana, dia de um valor de data
  • Usando TO_TIMESTAMP() para converter uma string em um carimbo de data/hora
  • Resumo

Visão geral do tipo de dados PostgreSQL DATE


DATE tipo de dados no PostgreSQL é usado para armazenar datas no formato AAAA-MM-DD (por exemplo, 24-03-2022). Ele precisa de 4 bytes para armazenar um valor de data em uma coluna. Observe que a data mais antiga possível é 4713 aC e a data mais recente possível é 5874897 dC.

É muito importante manter a legibilidade do código no estágio de escrevê-lo. O dbForge Studio for PostgreSQL pode apresentar um Formatador PostgreSQL conveniente e intuitivo. Cuidando da formatação de código, verificação de sintaxe e conclusão de código, o recurso de formatador Postgres SQL integrado dbForge Studio para PostgreSQL permitirá que você mantenha o foco em lidar com o tipo de dados DATE também.

Usando a data atual como valor padrão


O valor padrão em um DATE coluna em um banco de dados Postgres pode ser definida usando a palavra-chave DEFAULT CURRENT DATE , como no script abaixo:
CREATE TABLE myevents (
event_id serial PRIMARY KEY,
event_details VARCHAR (255) NOT NULL,
event_date DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO myevents (event_details)
VALUES('Meeting the client ABC');
 
SELECT * FROM myevents;

Como você pode ver, um valor para a [data do evento] A coluna é inserida automaticamente pelo servidor PostgreSQL, usando a data atual do sistema no formato AAAA-MM-DD.

Funções Postgres DATE


Às vezes, é fundamental alterar o formato da data ou calcular os valores na tabela do PostgreSQL. Talvez seja necessário fazer isso para usuários de diferentes fusos horários em todo o mundo. Nesse caso, as funções SQL são cruciais.

Usando a função NOW() para obter a data atual

SELECT now();

Você pode usar dois pontos duplos (::) para converter um DATETIME valor para um DATE valor conforme abaixo:

O timestamp atual do sistema é retornado pelo NOW() função. A sintaxe é a seguinte:
SELECT now()::date;

Usando a função TO_CHAR() – produza o valor da data em um formato especificado


Para apresentar a saída de um valor de data Postgres em um formato especificado, o método TO_CHAR() função vem a calhar. A sintaxe é a seguinte:
TO_CHAR(expression, format)

Existem dois parâmetros aceitos pelo TO_CHAR() função:
  • Data de entrada :a data a ser convertida em um formato específico.
  • Formato de data :o espaço reservado para uma nova especificação de formato de data.

Vamos ver como converter os valores de data existentes do [MyEvents] tabela no formato DD-MM-AAAA.
SELECT event_details,event_date as ExistingDateformat,
to_char(event_date,'DD-MM-YYYY') As NewDateFormat FROM myevents;

Para converter o timestamp atual no formato preferido, você pode fundir o TO_CHAR() e o NOW() funções.
SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');

Usando o operador menos para obter o intervalo entre duas datas


Para calcular a diferença entre duas datas, use o operador menos (-). A consulta abaixo fornece o período de tempo entre o timestamp atual e [eventdate] dos MeusEventos tabela.
SELECT event_date,now() as currentdate,
now()-event_date as Interval FROM myevents
where event_id=2;

Você também pode selecionar um intervalo para a data a ser retornada quando um determinado período de tempo tiver passado. Dê uma olhada na consulta abaixo:
SELECT (NOW() + interval '3 hour') AS threehourslater,
(NOW() + interval '2 day') AS Twodaylater,
(NOW() - interval '2 year') AS TwoYearBefore,
(event_date- interval '1 year') as eventdatedifference
from myevents;

Usando a função AGE() para obter a diferença de data em anos, meses e dias


Com o AGE() função, você pode obter a diferença de data em anos, meses e dias. Esta função pode ser usada para determinar a idade de uma pessoa. O primeiro valor de data é subtraído do segundo valor de data com esta função, que aceita duas entradas de data. Quando os valores no script da função são revertidos, o resultado é um valor negativo.

Vamos descobrir a idade da pessoa cuja data de nascimento é 1995-10-09. A sintaxe é a seguinte:
SELECT current_date,
AGE(timestamp '1995-10-09'::timestamp) as EmpAge;

Usando a função EXTRACT() para obter o ano, trimestre, mês, semana, dia de um valor de data


O EXTRACT() A função retorna um dia, semana, mês, ano e um quarto do valor de data especificado.

Extraia um ano:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-04-09 10:30:15') as year;

Extraia um mês:
SELECT EXTRACT(Month FROM TIMESTAMP '2022-04-09 10:30:15') as Month;

Extraia um quarto:
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') as QUARTER;

Extraia o dia da semana:
SELECT EXTRACT(DOW FROM TIMESTAMP '2022-04-09 10:30:15') as DOW;

Extraia o dia do ano:
SELECT EXTRACT(DOY FROM TIMESTAMP '2022-04-09 10:30:15') as DOY;

Observe que o dbForge Studio exibe os resultados da execução da consulta em uma guia separada.

O EXTRACT() função pode ser facilmente combinada com INTERVAL . Vamos supor que queremos definir o intervalo como 5 anos 8 meses 23 dias 08 horas 10 minutos e 20 segundos. Valores individuais são retornados pelo EXTRACT função.
SELECT EXTRACT(YEAR
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Month
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Day
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(hour
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Minute
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' );

Usando TO_TIMESTAMP() para converter uma string em um timestamp


Você pode manter os valores de data em UTC (coordenador de horário universal) e alterar o fuso horário conforme necessário se desejar converter o carimbo de data/hora em um fuso horário diferente.
SELECT * FROM pg_timezone_names;

Para verificar o fuso horário atual, use o SHOW TIMEZONE comando.

Você pode usar AT TIME ZONE para receber a saída para o fuso horário escolhido selecionando o valor do fuso horário necessário em pg_timezone_names tabela.
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Los_Angeles';

AT TIME ZONE permite que você tenha várias saídas de fuso horário.
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Washington';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Asia/Beijing';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Europe/Kyiv';

Resumo


Para resumir, o DATE do PostgreSQL tipo de dados é muito importante e útil ao armazenar datas e timestamps em tabelas, por isso é bastante comum em um banco de dados relacional. O alcance de seu uso é incrivelmente amplo, por isso é tão importante deixá-los claros para qualquer usuário em qualquer país e fuso horário. Com várias funções do Postgres, é fácil atender às necessidades dos usuários, pois você pode alterar as datas para que possam ser usadas em um fuso horário específico, com um determinado formato e outros detalhes que facilitam muito o trabalho com esses dados. Finalmente, se você está procurando uma combinação perfeita de uma interface gráfica intuitiva e uma linha de comando aumentada que pode tornar o trabalho com o DATE tipo de dados ainda mais agradável, o dbForge Studio para PostgreSQL será útil.