CodeGym /Cursos /SQL SELF /Tipos de datos para trabajar con fecha y hora: DAT...

Tipos de datos para trabajar con fecha y hora: DATE, TIME, TIMESTAMP

SQL SELF
Nivel 15 , Lección 4
Disponible

¿Cuántas veces te has topado con apps que trabajan con fechas y horas? Pedidos online, horarios, historial de cambios en la base de datos — todos dependen de guardar bien la hora. PostgreSQL tiene herramientas potentes para esto, y ojo, las tablas con tiempo no son tablas raras llenas de relojes, sino estructuras claras que te dejan analizar y ordenar eventos.

Los tipos para fecha y hora te permiten:

  • Guardar solo la fecha DATE, solo la hora TIME o ambas juntas TIMESTAMP.
  • Hacer operaciones como sumar días, calcular la diferencia entre fechas y filtrar registros por criterios de tiempo.
  • Trabajar con zonas horarias (pero eso lo veremos en otra lección).

Tipos de datos: DATE, TIME, TIMESTAMP

Tipo de dato DATE

El tipo DATE es para guardar solo la fecha, sin la hora. Guarda año, mes y día. Este tipo va bien cuando:

  • Necesitas guardar la fecha de cumpleaños de un usuario.
  • La fecha del evento importa, pero la hora no.

Ejemplo de formato: YYYY-MM-DD (año-mes-día).

Ejemplo:

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 dato TIME

El tipo TIME se usa para guardar solo la hora. Es útil cuando:

  • Quieres guardar un horario, por ejemplo, el inicio de la jornada laboral.
  • La hora importa, pero la fecha no.

Ejemplo de formato: HH:MI:SS (horas:minutos:segundos).

Ejemplo:

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 dato TIMESTAMP

TIMESTAMP es la combinación de fecha y hora. Es útil cuando:

  • Quieres guardar el momento exacto, por ejemplo, cuando un usuario entra al sistema.
  • Necesitas una marca de tiempo para seguir cambios (logging).

Ejemplo de formato: YYYY-MM-DD HH:MI:SS (año-mes-día horas:minutos:segundos).

Ejemplo:

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

Operaciones con fecha y hora

Ahora que ya sabes qué tipos existen, vamos a ver cómo se usan. PostgreSQL trae un montón de funciones para hacer operaciones con fechas y horas.

Extraer partes de fecha y hora

Si tienes una marca de tiempo (TIMESTAMP) y quieres sacar solo el año, mes, día u hora, usa la función EXTRACT.

Ejemplo:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2025-06-15 14:30:00') AS year;
-- Resultado: 2025

SELECT EXTRACT(MONTH FROM TIMESTAMP '2025-06-15 14:30:00') AS month;
-- Resultado: 06

SELECT EXTRACT(DAY FROM TIMESTAMP '2025-06-15 14:30:00') AS day;
-- Resultado: 15

Sumar y restar intervalos de tiempo

¿Quieres saber qué pasa dentro de una semana? ¿O qué fue ayer? Usa operaciones con intervalos.

Ejemplo:

-- Sumar 7 días a la fecha actual
SELECT CURRENT_DATE + INTERVAL '7 days' AS next_week;

-- Restar 1 mes
SELECT CURRENT_DATE - INTERVAL '1 month' AS last_month;

Comparar fechas

¿Cómo saber si un evento ya pasó? Más fácil que encontrar un bug — solo compara los valores.

Ejemplo:

SELECT event_date
FROM events
WHERE event_date < CURRENT_DATE;
-- Seleccionamos todos los eventos en el pasado

Más sobre funciones para trabajar con fecha y hora lo veremos en las siguientes lecciones. Por ahora, solo recuerda que existen estos tipos — con eso basta.

Problemas de zonas horarias y estándar de tiempo

Aunque en esta lección aún no vamos a meternos a fondo con las zonas horarias, es importante mencionar que PostgreSQL soporta el tipo TIMESTAMPTZ (marca de tiempo con zona horaria). Por ejemplo, 2023-10-15 14:30:00+02 muestra que esa hora es para la zona UTC+2.

Vamos a ver este tema en el curso, pero más adelante :P

Ejemplo

Ahora toca probar en la práctica lo que acabamos de aprender. Vamos a crear una tabla que guarde el horario de clases de los estudiantes.

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

En un par de lecciones vas a estar creando tablas así en la base usando consultas SQL. Por ahora, solo disfruta :)

Errores típicos

Formato de fecha y hora: al insertar datos, es clave usar el formato correcto: YYYY-MM-DD para fechas y HH:MI:SS para horas. PostgreSQL puede no entender si intentas meter una fecha como "15/10/2023".

Incompatibilidad de tipos de datos: intentar guardar un valor de texto en un campo tipo DATE te dará error.

Errores con intervalos de tiempo: si sumas, por ejemplo, 30 días a febrero, PostgreSQL lo maneja bien, pero la fecha puede acabar en marzo.

Ahora ya conoces los tipos de datos para trabajar con fecha y hora en PostgreSQL. En proyectos reales esto ayuda a manejar horarios, registrar eventos o seguir cosas importantes en el sistema!

1
Cuestionario/control
Tipos de datos numéricos, nivel 15, lección 4
No disponible
Tipos de datos numéricos
Tipos de datos numéricos
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION