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.