¿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 horaTIMEo ambas juntasTIMESTAMP. - 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!
GO TO FULL VERSION