🧚 ¡Oye! Beekeeper Studio es una GUI de bases de datos rápida, moderna y de código abierto Descarga
2 de julio de 2025 Por Matthew Rathbone

Para insertar una fecha en SQL, escríbela en tu sentencia INSERT como una cadena 'YYYY-MM-DD', o usa una función como CURRENT_DATE para la fecha de hoy. Los ejemplos funcionan en PostgreSQL, MySQL, SQLite y SQL Server.

Cómo insertar una fecha en SQL

Escribe la fecha como cadena en formato 'YYYY-MM-DD'. Si la columna es de tipo fecha, la base de datos convierte la cadena en fecha:

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 una columna TIMESTAMP o DATETIME, agrega la hora después de un espacio, en 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 la fecha de hoy, pon CURRENT_DATE donde iría la cadena, sin comillas. CURRENT_TIMESTAMP te da la fecha y la 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

Reglas que debes conocer

  • Usa siempre 'YYYY-MM-DD'. Otros formatos dependen de la configuración de la base de datos. PostgreSQL y SQL Server leen '06/15/2021' como mes/día/año, y MySQL lo rechaza:
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
  • SQLite no valida fechas. No tiene tipo de fecha y guarda cualquier texto que le des. Sus funciones de fecha no pueden leer '06/15/2021', y convierten '2021-02-30' en 2021-03-02.
  • El TIMESTAMP de MySQL solo cubre de 1970 a 2038. Usa DATETIME para cumpleaños, fechas históricas y cualquier cosa muy en el 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
  • “Ahora” está en la zona horaria de la base de datos (siempre UTC en SQLite). Si tus usuarios están en más de una zona horaria, guarda en UTC.

Sintaxis alternativa

También te vas a encontrar con los nombres propios de cada base de datos para hoy y ahora:

  • MySQL: CURDATE() y NOW(). PostgreSQL también tiene NOW().
  • SQLite: date('now') y datetime('now').
  • SQL Server: CAST(GETDATE() AS DATE) y GETDATE(). No tiene CURRENT_DATE, así que la fecha de hoy necesita el cast.

¿Cuándo necesitas insertar una fecha?

La mayoría de las inserciones de fechas son una de estas cinco tareas, y cada una tiene su propia herramienta.

Registrar una fecha que ya conoces

Cumpleaños, fechas de vencimiento y citas vienen de una persona o de un formulario. Escríbelas como cadenas 'YYYY-MM-DD'.

Registrar la fecha de hoy o la hora actual

Las fechas de pedido, de registro y los logs de auditoría deben venir del reloj de la base de datos, no de un valor que alguien escribió. Usa CURRENT_DATE o CURRENT_TIMESTAMP (GETDATE() en SQL Server), o haz que uno sea el valor predeterminado de la columna.

Guardar la hora además de la fecha

Reuniones, vuelos y entradas de log también necesitan la hora. Usa una columna DATETIME o TIMESTAMP y escribe 'YYYY-MM-DD HH:MM:SS'.

Calcular una fecha a partir de otra

Las fechas de vencimiento, renovaciones y recordatorios caen un tiempo fijo después de otra fecha. Deja que la base de datos haga la aritmética: + INTERVAL en PostgreSQL y MySQL, DATEADD() en SQL Server y date() con un modificador en SQLite.

Cargar fechas escritas en otro formato

Las hojas de cálculo y las exportaciones CSV suelen tener fechas como 06/15/2021. Conviértelas al insertarlas: STR_TO_DATE() en MySQL, TO_DATE() en PostgreSQL y CONVERT() con un número de estilo en SQL Server. SQLite no puede interpretar otros formatos, así que reacomoda el texto con substr().

Ejemplos reales de inserción de fechas

Agregar varias fechas en una sola sentencia

Una lista de días festivos entra con un solo INSERT y una fila de valores por fecha:

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

Llenar la fecha de hoy con un valor predeterminado

Dale a la columna un valor predeterminado y cada INSERT que la omita recibirá la fecha de hoy. MySQL necesita los paréntesis alrededor 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

Guardar la hora local de una reunión en UTC

Alguien en Nueva York agenda una reunión para las 9:30 AM de su hora. Conviértela a UTC al insertarla para que las horas de todos coincidan:

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

SQLite no tiene zonas horarias con nombre, así que haz la conversión en tu aplicación antes de insertar.

Fijar una fecha de renovación un mes después

Una suscripción se renueva un mes después de que empieza. Calcula la fecha de renovación en el 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 con el fin de mes en SQLite. Desde el 31 de enero se pasa a marzo, mientras que las otras bases de datos se quedan en el 28 de febrero:

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

Importar fechas en formato día/mes/año

Un proveedor envía facturas con fechas al estilo del Reino Unido, 15/06/2021. Indícale el formato a la base de datos al insertar:

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

Más lecturas sobre cómo insertar fechas

En este blog:

Documentación oficial:

Beekeeper Studio es un cliente de bases de datos gratuito y de código abierto

La mejor herramienta de consultas y edición de SQL que he usado. Tiene todo lo que necesito para administrar mi base de datos. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio es rápido, intuitivo y fácil de usar. Es compatible con muchísimas bases de datos y funciona de maravilla en Windows, Mac y Linux.

La versión de Beekeeper para Linux tiene el 100% de las funciones, sin recortes ni concesiones.

Lo que dicen los usuarios de Beekeeper Studio

★★★★★
"Beekeeper Studio reemplazó por completo mi antiguo flujo de trabajo con SQL. Es rápido, intuitivo y hace que trabajar con bases de datos vuelva a ser disfrutable."
— Alex K., desarrollador de bases de datos
★★★★★
"He probado muchas GUI de bases de datos, pero Beekeeper logra el equilibrio perfecto entre funciones y simplicidad. Simplemente funciona."
— Sarah M., ingeniera Full Stack

¿Listo para mejorar tu flujo de trabajo con SQL?

download Descarga gratis