Quantas vezes você já viu apps que trabalham com datas e horários? Pedidos online, agendas, histórico de mudanças no banco — tudo depende de guardar o tempo certinho. O PostgreSQL tem ferramentas poderosas pra lidar com isso, e, claro, tabelas com datas não são tabelinhas assustadoras cheias de relógios, mas sim uma estrutura massa pra analisar e organizar eventos.
Os tipos pra data e hora servem pra:
- Guardar só a data
DATE, só a horaTIMEou os dois juntosTIMESTAMP. - Fazer operações tipo adicionar dias, calcular diferença entre datas e filtrar registros por critérios de tempo.
- Trabalhar com fusos horários (mas isso é papo pra outra aula).
Tipos de dados: DATE, TIME, TIMESTAMP
Tipo de dado DATE
O tipo DATE serve pra guardar só a data, sem hora. Ele salva ano, mês e dia. Esse tipo é útil quando:
- Você precisa guardar o aniversário do usuário.
- A data do evento importa, mas o horário não faz diferença.
Exemplo de formato: YYYY-MM-DD (ano-mês-dia).
Exemplo:
| id | name - VARCHAR(100) | event_date - DATE |
|---|---|---|
| 1 | SQL Workshop | 2025-06-15 |
| 2 | Python | 2025-06-17 |
| 3 | Java Courses | 2025-06-25 |
Tipo de dado TIME
O tipo TIME é pra guardar só a hora. Ele é útil quando:
- Você quer salvar um horário, tipo o começo do expediente.
- O horário importa, mas a data não.
Exemplo de formato: HH:MI:SS (hora:minuto:segundo).
Exemplo:
| id | task_name - VARCHAR(100) | start_time - TIME |
|---|---|---|
| 1 | Team Meeting | 09:00:00 |
| 2 | Code Review | 11:30:00 |
| 3 | Client Call | 15:00:00 |
Tipo de dado TIMESTAMP
TIMESTAMP é a mistura de data e hora. Ele é útil quando:
- Você quer registrar o momento exato, tipo quando o usuário fez login.
- Precisa de um carimbo de tempo pra rastrear mudanças (log).
Exemplo de formato: YYYY-MM-DD HH:MI:SS (ano-mês-dia hora:minuto:segundo).
Exemplo:
| id | action - VARCHAR(100) | login_time - TIMESTAMP |
|---|---|---|
| 1 | User Login | 2023-10-15 14:30:00 |
| 2 | File Uploaded | 2023-10-15 15:10:00 |
| 3 | User Logout | 2023-10-15 16:45:00 |
Operações com data e hora
Agora que a gente já sabe quais tipos existem, bora ver como mexer com eles. O PostgreSQL tem várias funções prontas pra fazer operações com datas e horários.
Extraindo partes da data e hora
Se você tem um carimbo de tempo (TIMESTAMP) e quer pegar só o ano, mês, dia ou hora, usa a função EXTRACT.
Exemplo:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2025-06-15 14:30:00') AS ano;
-- Resultado: 2025
SELECT EXTRACT(MONTH FROM TIMESTAMP '2025-06-15 14:30:00') AS mes;
-- Resultado: 06
SELECT EXTRACT(DAY FROM TIMESTAMP '2025-06-15 14:30:00') AS dia;
-- Resultado: 15
Adicionando e subtraindo intervalos de tempo
Quer saber como vai estar daqui uma semana? Ou o que rolou ontem? Usa operações com intervalos.
Exemplo:
-- Adicionando 7 dias à data atual
SELECT CURRENT_DATE + INTERVAL '7 days' AS proxima_semana;
-- Subtraindo 1 mês
SELECT CURRENT_DATE - INTERVAL '1 month' AS mes_passado;
Comparando datas
Como saber se um evento já rolou? Mais fácil que achar bug no código — só comparar os valores.
Exemplo:
SELECT event_date
FROM events
WHERE event_date < CURRENT_DATE;
-- Seleciona todos os eventos que já passaram
Mais sobre funções pra trabalhar com data e hora você vai ver nas próximas aulas. Por enquanto, só lembra que esses tipos existem — isso já tá ótimo.
Problemas de fuso horário e padrão de tempo
Nessa aula a gente ainda não vai entrar nos detalhes de fuso horário, mas é bom saber que o PostgreSQL tem o tipo TIMESTAMPTZ (timestamp com fuso horário). Por exemplo, 2023-10-15 14:30:00+02 mostra que esse horário é do fuso UTC+2.
A gente vai falar disso no curso, mas só mais pra frente :P
Exemplo
Agora bora testar na prática o que aprendemos. Vamos criar uma tabela pra guardar o horário das aulas dos estudantes.
| id | subject_name | class_date - DATE | start_time - TIME | end_time - TIME | created_at - TIMESTAMP |
|---|---|---|---|---|---|
| 1 | Mathematics | 2023-10-16 | 09:00:00 | 10:30:00 | 2023-10-12 14:00:00 |
| 2 | Physics | 2023-10-16 | 11:00:00 | 12:30:00 | 2023-10-12 14:00:00 |
| 3 | Chemistry | 2023-10-17 | 09:00:00 | 10:30:00 | 2023-10-12 14:01:00 |
| 4 | Literature | 2023-10-17 | 11:00:00 | 12:30:00 | 2023-10-12 14:01:00 |
| 5 | Computer Science | 2023-10-18 | 10:00:00 | 11:30:00 | 2023-10-12 14:02:00 |
Daqui a algumas aulas você vai criar tabelas assim no banco usando SQL. Por enquanto, só admira mesmo :)
Erros comuns
Formato de data e hora: na hora de inserir dados, segue o formato certo: YYYY-MM-DD pra datas e HH:MI:SS pra hora. O PostgreSQL pode não entender se você tentar colocar a data como "15/10/2023".
Tipo de dado errado: tentar salvar texto num campo DATE vai dar erro.
Erros de intervalo de tempo: se você adicionar, por exemplo, 30 dias em fevereiro, o PostgreSQL vai calcular certinho, mas a data pode cair em março.
Agora você já conhece os tipos de dados pra trabalhar com data e hora no PostgreSQL. Em projetos reais, isso ajuda a organizar agendas, logar eventos ou rastrear coisas importantes no sistema!
GO TO FULL VERSION