🧚 Ei! O Beekeeper Studio é uma GUI de banco de dados rápida, moderna e open source Download
2 de julho de 2025 Por Matthew Rathbone

Para inserir uma data em SQL, escreva-a no seu INSERT como uma string 'YYYY-MM-DD', ou use uma função como CURRENT_DATE para a data de hoje. Os exemplos funcionam no PostgreSQL, MySQL, SQLite e SQL Server.

Como inserir uma data em SQL

Escreva a data como uma string no formato 'YYYY-MM-DD'. Quando a coluna é de um tipo de data, o banco converte a string em data:

INSERT INTO table_name (date_column) VALUES ('YYYY-MM-DD');
INSERT INTO orders (order_id, customer, order_date)
VALUES (2, 'Tom', '2021-06-15');

Para uma coluna TIMESTAMP ou DATETIME, adicione a hora após um espaço, no formato de 24 horas:

INSERT INTO flights (flight_no, departs_at)
VALUES ('UA 940', '2026-11-02 17:45:00');
-- In SQL Server, make departs_at a DATETIME2: its TIMESTAMP type isn't a date

Para a data de hoje, coloque CURRENT_DATE no lugar da string, sem aspas. CURRENT_TIMESTAMP retorna a data e a hora:

INSERT INTO orders (order_id, customer, order_date)
VALUES (3, 'Priya', CURRENT_DATE);
-- In SQL Server, use CAST(GETDATE() AS DATE): it has no CURRENT_DATE

-- Output (the new row, run on 2026-10-13):
-- order_id | customer | order_date
-- ---------+----------+-----------
-- 3        | Priya    | 2026-10-13

Regras importantes

  • Use sempre 'YYYY-MM-DD'. Outros formatos dependem das configurações do banco. O PostgreSQL e o SQL Server leem '06/15/2021' como mês/dia/ano, e o MySQL o rejeita:
INSERT INTO orders (order_id, customer, order_date) VALUES (4, 'Ana', '06/15/2021');
-- MySQL: ERROR 1292 (22007): Incorrect date value: '06/15/2021' for column 'order_date' at row 1
  • O SQLite não valida datas. Ele não tem tipo de data e armazena qualquer texto que você passar. Suas funções de data não conseguem ler '06/15/2021' e transformam '2021-02-30' em 2021-03-02.
  • O TIMESTAMP do MySQL só cobre de 1970 a 2038. Use DATETIME para aniversários, datas históricas e qualquer coisa muito no futuro:
-- MySQL
CREATE TABLE people (name VARCHAR(50), born_at TIMESTAMP);
INSERT INTO people (name, born_at) VALUES ('Ada Lovelace', '1815-12-10 00:00:00');
-- ERROR 1292 (22007): Incorrect datetime value: '1815-12-10 00:00:00' for column 'born_at' at row 1
  • “Agora” está no fuso horário do banco (sempre UTC no SQLite). Se seus usuários estão em mais de um fuso horário, armazene em UTC.

Sintaxe alternativa

Você também vai encontrar os nomes próprios de cada banco para hoje e agora:

  • MySQL: CURDATE() e NOW(). O PostgreSQL também tem NOW().
  • SQLite: date('now') e datetime('now').
  • SQL Server: CAST(GETDATE() AS DATE) e GETDATE(). Ele não tem CURRENT_DATE, então a data de hoje precisa do cast.

Quando você precisa inserir uma data?

A maioria das inserções de data se encaixa em uma destas cinco tarefas, e cada uma tem sua própria ferramenta.

Registrar uma data que você já sabe

Aniversários, prazos e compromissos vêm de uma pessoa ou de um formulário. Digite-os como strings 'YYYY-MM-DD'.

Registrar a data de hoje ou a hora atual

Datas de pedidos, datas de cadastro e logs de auditoria devem vir do relógio do banco, não de um valor digitado por alguém. Use CURRENT_DATE ou CURRENT_TIMESTAMP (GETDATE() no SQL Server), ou defina um deles como padrão da coluna.

Armazenar a hora junto com a data

Reuniões, voos e entradas de log também precisam da hora. Use uma coluna DATETIME ou TIMESTAMP e escreva 'YYYY-MM-DD HH:MM:SS'.

Calcular uma data a partir de outra

Prazos, renovações e lembretes caem um tempo fixo após outra data. Deixe o banco fazer a conta: + INTERVAL no PostgreSQL e no MySQL, DATEADD() no SQL Server e date() com um modificador no SQLite.

Carregar datas escritas em outro formato

Planilhas e exportações CSV costumam ter datas como 06/15/2021. Converta-as na inserção: STR_TO_DATE() no MySQL, TO_DATE() no PostgreSQL e CONVERT() com um número de estilo no SQL Server. O SQLite não interpreta outros formatos, então reorganize o texto com substr().

Exemplos reais de inserção de datas

Adicionar várias datas em um só comando

Uma lista de feriados entra com um único INSERT e uma linha de valores por data:

INSERT INTO holidays (holiday_name, holiday_date)
VALUES
  ('Independence Day', '2026-07-04'),
  ('Thanksgiving', '2026-11-26'),
  ('Christmas Day', '2026-12-25');

Preencher a data de hoje com um padrão

Defina um padrão para a coluna e todo INSERT que a omitir recebe a data de hoje. O MySQL exige os parênteses em volta de CURRENT_DATE:

CREATE TABLE orders (
  order_id INT,
  customer_id INT,
  order_date DATE DEFAULT (CURRENT_DATE)  -- SQL Server: DEFAULT CAST(GETDATE() AS DATE)
);

INSERT INTO orders (order_id, customer_id) VALUES (1, 42);

-- Output (the new row, run on 2026-10-13):
-- order_id | customer_id | order_date
-- ---------+-------------+-----------
-- 1        | 42          | 2026-10-13

Salvar o horário local de uma reunião em UTC

Alguém em Nova York marca uma reunião para as 9h30 no horário local. Converta para UTC na inserção, para que os horários de todos fiquem alinhados:

INSERT INTO meetings (title, starts_at_utc)
VALUES ('Design review', TIMESTAMP '2026-10-20 09:30:00' AT TIME ZONE 'America/New_York' AT TIME ZONE 'UTC');
-- MySQL (once its time zone tables are loaded):
--   CONVERT_TZ('2026-10-20 09:30:00', 'America/New_York', 'UTC')
-- SQL Server:
--   CAST('2026-10-20 09:30:00' AS DATETIME2) AT TIME ZONE 'Eastern Standard Time' AT TIME ZONE 'UTC'

-- Output (the new row):
-- title         | starts_at_utc
-- --------------+--------------------
-- Design review | 2026-10-20 13:30:00

O SQLite não tem fusos horários nomeados, então faça a conversão na sua aplicação antes de inserir.

Definir uma renovação para um mês depois

Uma assinatura é renovada um mês após começar. Calcule a data de renovação no INSERT:

INSERT INTO subscriptions (customer, started_on, renews_on)
VALUES ('Tom', '2026-10-13', DATE '2026-10-13' + INTERVAL '1' MONTH);
-- SQL Server: DATEADD(month, 1, '2026-10-13')
-- SQLite:     date('2026-10-13', '+1 month')

-- Output (the new row):
-- customer | started_on | renews_on
-- ---------+------------+-----------
-- Tom      | 2026-10-13 | 2026-11-13

Cuidado com o fim do mês no SQLite. A partir de 31 de janeiro ele transborda para março, enquanto os outros bancos param em 28 de fevereiro:

SELECT date('2026-01-31', '+1 month');
-- Output: 2026-03-03

Importar datas no formato dia/mês/ano

Um fornecedor envia faturas datadas no padrão britânico, 15/06/2021. Informe o formato ao banco na inserção:

INSERT INTO invoices (invoice_no, issued_on)
VALUES ('INV-1002', TO_DATE('15/06/2021', 'DD/MM/YYYY'));
-- MySQL:      STR_TO_DATE('15/06/2021', '%d/%m/%Y')
-- SQL Server: CONVERT(date, '15/06/2021', 103), where style 103 is dd/mm/yyyy
-- SQLite can't parse dates: rearrange the text with substr()

-- Output (the new row):
-- invoice_no | issued_on
-- -----------+-----------
-- INV-1002   | 2021-06-15

Leitura complementar sobre inserção de datas

Neste blog:

Documentação oficial:

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 bancos de dados prazeroso de novo."
— Alex K., desenvolvedor de banco de dados
★★★★★
"Já testei muitas 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