Todos os Tipos SQL: Para que servem, Onde usar e O que muda entre A, B ou C
Consulte todos os tipos de campos do banco de dados organizados por categoria funcional. Entenda exatamente para que serve cada tipo, onde aplicar no seu projeto e o que muda na prática se você escolher o tipo A, B ou C na hora de desenhar no DrawDB e programar em PHP.
4. Datas, Horários e Auditoria de Tempo
Para datas de nascimento, vencimentos, horários de expediente, agendamentos e logs (created_at).
⚖️ O que muda se eu usar (A) DATE, (B) DATETIME, (C) TIMESTAMP ou (D) TIME?
Comparativo de Impacto Real (A vs B vs C)Opção A: Usar DATE (Só Ano-Mês-Dia)
Opção B: Usar DATETIME (Data + Hora Fixa Civil)
Opção C: Usar TIMESTAMP (Carimbo de Tempo Universal UTC)
📌 Para que serve este Tipo SQL:
Registrar datas civis sem horário.
📍 Onde posso usar:
- • Data de nascimento (`data_nascimento DATE`)
- • Data de vencimento de boleto/fatura (`data_vencimento DATE`)
- • Data de emissão contábil ou início de contrato
⚖️ O que muda se eu escolher este?
Ao contrário de salvar em VARCHAR("19/10/2026"), o tipo DATE permite ordenar do mais antigo para o mais novo (`ORDER BY data_vencimento ASC`) e somar dias (`DATE_ADD`).
📌 Para que serve este Tipo SQL:
Guardar apenas o horário do relógio (sem dia/mês/ano) ou um intervalo de duração.
📍 Onde posso usar:
- • Horário de abertura e fechamento de uma loja (`08:00:00` às `18:00:00`)
- • Horário fixo de início de uma aula ou turno de trabalho
⚖️ O que muda se eu escolher este?
Permite consultar facilmente "quais lojas estão abertas agora" comparando `CURTIME() BETWEEN abre_as AND fecha_as`.
📌 Para que serve este Tipo SQL:
Registrar data e hora completas sem conversão de fuso horário e sem limite de ano 2038.
📍 Onde posso usar:
- • Data e hora de agendamentos (`data_hora_consulta DATETIME`)
- • Início e fim de promoções, eventos ou validade de certificados longos
⚖️ O que muda se eu escolher este?
Guarda exatamente a data/hora enviada pelo PHP, independentemente do timezone configurado no servidor MySQL.
📌 Para que serve este Tipo SQL:
Carimbo de tempo automático de quando um registro foi criado, alterado ou excluído.
📍 Onde posso usar:
- • Auditoria automática: `criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP`
- • Última alteração: `atualizado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`
- • Exclusão lógica (Soft Delete): `deletado_em TIMESTAMP NULL`
⚖️ O que muda se eu escolher este?
Converte para UTC internamente e é mais leve (4 bytes), mas no MySQL não aceita datas antes de 1970 nem depois de 2038.
📌 Para que serve este Tipo SQL:
Guardar exclusivamente um número de ano com 4 dígitos gastando apenas 1 byte.
📍 Onde posso usar:
- • Ano de exercício fiscal, ano letivo escolar ou ano de fabricação (entre 1901 e 2155).
⚖️ O que muda se eu escolher este?
Economiza 1 byte em relação ao SMALLINT, mas só existe no MySQL/MariaDB e só vai de 1901 a 2155. Se precisar de anos antigos (ex: 1850) ou usar PostgreSQL, use SMALLINT.