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

No mundo dos bancos de dados SQL, o PostgreSQL é amplamente conhecido por sua robustez e pelo rico conjunto de recursos. Um desses recursos é o forte suporte a tipos de data e timestamp. Neste guia, vamos explorar como formatar datas no PostgreSQL, com exemplos de código. Este tutorial é voltado para engenheiros de software e outras pessoas com perfil técnico que querem ampliar seus conhecimentos de PostgreSQL.

Entendendo datas no PostgreSQL

Antes de mergulhar em como formatar datas, é fundamental entender como as datas são representadas no PostgreSQL. O PostgreSQL usa o tipo de dado “Date” para armazenar datas. Veja como criar uma tabela com uma coluna DATE.

CREATE TABLE orders (
  order_id serial PRIMARY KEY,
  order_date DATE NOT NULL
);

Agora, vamos inserir alguns dados na tabela orders.

INSERT INTO orders (order_date) VALUES 
('2022-04-01'),
('2022-04-02'),
('2022-04-03');

O PostgreSQL é esperto e consegue interpretar uma data a partir de uma string se você fornecer a data no formato ISO 6801.

Como formatar datas no PostgreSQL: usando a função TO_CHAR

O principal método para formatar datas no PostgreSQL é a função TO_CHAR. A TO_CHAR permite formatar tipos de data/hora em uma string com um padrão específico. Veja como usá-la:

TO_CHAR(date, format)

A lista completa de opções de formatação está disponível na documentação do PostgreSQL. Estas são as opções de formatação em janeiro de 2024:

Padrão Descrição
HH hora do dia (01–12)
HH12 hora do dia (01–12)
HH24 hora do dia (00–23)
MI minuto (00–59)
SS segundo (00–59)
MS milissegundo (000–999)
US microssegundo (000000–999999)
FF1 décimo de segundo (0–9)
FF2 centésimo de segundo (00–99)
FF3 milissegundo (000–999)
FF4 décimo de milissegundo (0000–9999)
FF5 centésimo de milissegundo (00000–99999)
FF6 microssegundo (000000–999999)
SSSS, SSSSS segundos desde a meia-noite (0–86399)
AM, am, PM or pm indicador de meridiano (sem pontos)
A.M., a.m., P.M. ou p.m. indicador de meridiano (com pontos)
Y,YYY ano (4 ou mais dígitos) com vírgula
YYYY ano (4 ou mais dígitos)
YYY últimos 3 dígitos do ano
YY últimos 2 dígitos do ano
Y último dígito do ano
IYYY ano com numeração de semanas ISO 8601 (4 ou mais dígitos)
IYY últimos 3 dígitos do ano com numeração de semanas ISO 8601
IY últimos 2 dígitos do ano com numeração de semanas ISO 8601
I último dígito do ano com numeração de semanas ISO 8601
BC, bc, AD ou ad indicador de era (sem pontos)
B.C., b.c., A.D. ou a.d. indicador de era (com pontos)
MONTH nome completo do mês em maiúsculas (preenchido com espaços até 9 caracteres)
Month nome completo do mês com inicial maiúscula (preenchido com espaços até 9 caracteres)
month nome completo do mês em minúsculas (preenchido com espaços até 9 caracteres)
MON nome abreviado do mês em maiúsculas (3 caracteres em inglês; o tamanho varia conforme o idioma)
Mon nome abreviado do mês com inicial maiúscula (3 caracteres em inglês; o tamanho varia conforme o idioma)
mon nome abreviado do mês em minúsculas (3 caracteres em inglês; o tamanho varia conforme o idioma)
MM número do mês (01–12)
DAY nome completo do dia em maiúsculas (preenchido com espaços até 9 caracteres)
Day nome completo do dia com inicial maiúscula (preenchido com espaços até 9 caracteres)
day nome completo do dia em minúsculas (preenchido com espaços até 9 caracteres)
DY nome abreviado do dia em maiúsculas (3 caracteres em inglês; o tamanho varia conforme o idioma)
Dy nome abreviado do dia com inicial maiúscula (3 caracteres em inglês; o tamanho varia conforme o idioma)
dy nome abreviado do dia em minúsculas (3 caracteres em inglês; o tamanho varia conforme o idioma)
DDD dia do ano (001–366)
IDDD dia do ano com numeração de semanas ISO 8601 (001–371; o dia 1 do ano é a segunda-feira da primeira semana ISO)
DD dia do mês (01–31)
D dia da semana, de domingo (1) a sábado (7)
ID dia da semana ISO 8601, de segunda-feira (1) a domingo (7)
W semana do mês (1–5) (a primeira semana começa no primeiro dia do mês)
WW número da semana do ano (1–53) (a primeira semana começa no primeiro dia do ano)
IW número da semana do ano com numeração de semanas ISO 8601 (01–53; a primeira quinta-feira do ano fica na semana 1)
CC século (2 dígitos) (o século XXI começa em 2001-01-01)
J Data juliana (dias inteiros desde 24 de novembro de 4714 a.C. à meia-noite local; veja a Seção B.7)
Q trimestre
RM mês em algarismos romanos maiúsculos (I–XII; I=janeiro)
rm mês em algarismos romanos minúsculos (i–xii; i=janeiro)
TZ abreviação do fuso horário em maiúsculas (suportado apenas em to_char)
tz abreviação do fuso horário em minúsculas (suportado apenas em to_char)
TZH horas do fuso horário
TZM minutos do fuso horário
OF diferença do fuso horário em relação ao UTC (suportado apenas em to_char)

Exemplos de formatação de datas

Vamos começar convertendo nossa data em uma string simples e legível. Veja como fazer:

SELECT order_id, TO_CHAR(order_date, 'DD Mon YYYY') as formatted_date
FROM orders;

A saída ficaria assim:

order_id | formatted_date
———+—————-
1 | 13 Jan 2024
2 | 12 Jan 2024
3 | 11 Jan 2024
4 | 10 Jan 2024
5 | 09 Jan 2024

Também podemos extrair apenas uma parte da data:

SELECT order_id, TO_CHAR(order_date, 'Day') as day_of_week
FROM orders;

order_id | day_of_week
———+————-
1 | Friday
2 | Thursday
3 | Wednesday
4 | Tuesday
5 | Monday

Podemos até combinar formatos, se quisermos:

SELECT order_id, TO_CHAR(order_date, 'Day, DD Mon YYYY') as detailed_date
FROM orders;

order_id | detailed_date
———+————————
1 | Friday, 13 Jan 2024
2 | Thursday, 12 Jan 2024
3 | Wednesday, 11 Jan 2024
4 | Tuesday, 10 Jan 2024
5 | Monday, 09 Jan 2024

Função EXTRACT

A função EXTRACT oferece acesso fácil a todas as partes possíveis de um valor de data/hora, como ano, mês, dia etc.

SELECT order_id, EXTRACT(MONTH from order_date) as order_month
FROM orders;

order_id | order_month
———+————
1 | 1
2 | 1
3 | 1
4 | 1
5 | 1

Esse é o básico da formatação de datas no PostgreSQL. Essas ferramentas devem dar uma base sólida para lidar com dados de data. Como tudo em programação, a prática é essencial: teste esses comandos você mesmo e veja o que mais consegue criar. Bom código!

Você deveria mesmo experimentar rodar essas consultas no Beekeeper Studio. :-)

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 prazeroso de novo."
— Alex K., desenvolvedor de banco de dados
★★★★★
"Já testei várias 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 Baixe grátis