- 1 1. Introducción
- 2 2. Funciones de MySQL para Obtener la Hora Actual (Tabla Comparativa)
- 3 3. Detalles de la Función NOW()
- 4 4. Características de la función SYSDATE()
1. Introducción
Obtener la hora actual en MySQL es un aspecto muy importante de la gestión de bases de datos.
Por ejemplo, necesita obtener la hora actual en situaciones como las siguientes.
- Registrar automáticamente la marca de tiempo de creación al insertar datos (por ejemplo, marca de tiempo para el registro de un nuevo usuario)
- Registrar los tiempos de inicio de sesión de los usuarios (por ejemplo, gestionar el historial de inicio de sesión)
- Recuperar datos para un período específico (por ejemplo, obtener el historial de pedidos de las últimas 24 horas)
- Registrar eventos de ejecución del sistema (por ejemplo, gestionar registros de errores y registros de eventos)
Por lo tanto, obtener correctamente la “hora actual” para la gestión de datos y el registro es esencial para las operaciones de la base de datos.
En este artículo, explicaremos a fondo cómo obtener la hora actual en MySQL, incluyendo consultas SQL reales.
También cubriremos las diferencias entre las funciones más utilizadas, las distinciones de uso apropiado y ejemplos prácticos de consultas, lo que lo hace útil tanto para principiantes como para usuarios intermedios.
2. Funciones de MySQL para Obtener la Hora Actual (Tabla Comparativa)
MySQL ofrece varias funciones para obtener la hora actual.
Elegir la función adecuada según el caso de uso es importante, pero muchas personas encuentran difíciles de entender las diferencias.
En esta sección, comparamos las funciones principales para obtener la hora actual en MySQL en una tabla y explicamos cada una de sus características en detalle.
2.1 Tabla Comparativa de Funciones de Obtención de Hora en MySQL
Nombre de la Función | Información Recuperada | Format | Características |
|---|---|---|---|
| NOW() | Fecha y hora actuales | YYYY-MM-DD HH:MM:SS | Los más usados |
| SYSDATE() | Fecha y hora de ejecución | YYYY-MM-DD HH:MM:SS | A diferencia de NOW(), cambia con cada ejecución |
| CURTIME() | Hora actual | HH:MM:SS | Solo hora, no fecha |
| CURRENT_TIME() | Hora actual | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Fecha y hora actuales | YYYY-MM-DD HH:MM:SS | Casi igual a NOW() |
| UTC_TIMESTAMP() | Fecha y hora UTC actuales | YYYY-MM-DD HH:MM:SS | Zona horaria fijada a UTC |
Al observar la tabla anterior, la mayoría de las funciones recuperan la “fecha y hora actuales” o la “hora actual”, pero la función que debe elegir varía según el propósito.
2.2 Visión General y Características de Cada Función
NOW() Function
- La función común para obtener la fecha y hora actuales
- Devuelve la hora en que se inició la consulta SQL
- Se usa a menudo para obtener marcas de tiempo al insertar o actualizar datos
SELECT NOW();
Resultado de ejemplo
2025-02-14 15:30:45
SYSDATE() Function
- Obtiene la hora actual en el momento en que se ejecuta la consulta
- La diferencia con NOW() es que SYSDATE() devuelve una hora diferente en cada ejecución (incluso dentro de una transacción)
SELECT SYSDATE();
Resultado de ejemplo
2025-02-14 15:30:47
CURTIME() Function
- Recupera solo la hora (HH:MM:SS)
- Se usa cuando no se necesita la fecha
SELECT CURTIME();
Resultado de ejemplo
15:30:45
CURRENT_TIME() Function
- Se comporta igual que CURTIME()
- El nombre de la función cumple con el estándar SQL
SELECT CURRENT_TIME();
Resultado de ejemplo
15:30:45
CURRENT_TIMESTAMP() Function
- Mismo comportamiento que NOW()
- Se puede especificar como valor
DEFAULTpara una columna de tabla (más adecuado queNOW())
SELECT CURRENT_TIMESTAMP();
Resultado de ejemplo
2025-02-14 15:30:45
Establecer como valor predeterminado al crear una tabla:
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
UTC_TIMESTAMP() Function
- Recupera la hora UTC actual (Tiempo Universal Coordinado)
- Proporciona una hora consistente independientemente de la zona horaria del servidor
SELECT UTC_TIMESTAMP();
Resultado de ejemplo
2025-02-14 06:30:45
2.3 ¿Qué Función Deberías Usar?
Caso de uso | Función recomendada |
|---|---|
| Recuperar la fecha y hora actual | NOW() |
| Obtén un tiempo distinto para cada transacción | SYSDATE() |
| Solo necesita la hora actual (HH:MM:SS) | CURTIME() or CURRENT_TIME() |
| Establecer como valor predeterminado de la tabla | CURRENT_TIMESTAMP() |
| Obtener UTC (Tiempo Universal Coordinado) | UTC_TIMESTAMP() |
En general, para la obtención ordinaria de fecha y hora, usar NOW() funciona bien!
Sin embargo, elegir la función adecuada para su caso de uso permite una manipulación de datos más flexible.
3. Detalles de la Función NOW()
La función NOW() de MySQL es la función más común para obtener la fecha y hora actuales (año-mes-día más hora).
Se utiliza en una amplia gama de escenarios, como al almacenar datos en la base de datos o al recuperar datos para un período específico.
3.1 Uso Básico de la Función NOW()
Sintaxis de NOW()
SELECT NOW();
Resultado de Ejemplo
2025-02-14 15:30:45
- Salidas en el formato
YYYY-MM-DD HH:MM:SS(año-mes-día hora:minuto:segundo). - La hora se recupera según la zona horaria predeterminada de MySQL.
3.2 Usos de la función NOW()
① Registrar la hora actual al insertar datos
Al insertar datos en la base de datos, puedes usar NOW() para registrar la marca de tiempo de creación.
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
② Registrar la hora actual al actualizar datos
UPDATE users SET last_login = NOW() WHERE id = 1;
③ Recuperar datos para un período específico
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
- Especificar
INTERVAL 1 DAYrecupera datos de los últimos 1 día.
3.3 Tipo de retorno de la función NOW() y cambio de formato
Tipo de dato de retorno de NOW()
DATETIME
tipo (YYYY-MM-DD HH:MM:SS)
- También puede tratarse como una cadena
SELECT NOW(), typeof(NOW());
Cómo cambiar el formato
SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s') AS formatted_time;
Resultado
2025/02/14 15:30:45
3.4 Diferencias entre la función NOW() y la función SYSDATE()
Nombre de la función | Tiempo de recuperación | Características |
|---|---|---|
| NOW() | Al inicio de la consulta | Obtiene una marca de tiempo fija en el momento en que se ejecuta la consulta. |
| SYSDATE() | Durante la ejecución de la consulta | Obtiene una hora diferente para cada> cada ejecución de la consulta |
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Resultado de ejemplo
NOW() | SLEEP(3) | NOW()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:48
🚨 Al tratar con transacciones, se recomienda NOW() porque proporciona consistencia!
3.5 Limitaciones y consideraciones de la función NOW()
① Depende de la zona horaria
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');>
② Utiliza CURRENT_TIMESTAMP como valor predeterminado para las tablas
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3.6 Resumen de la función NOW()
NOW()es la función más común en MySQL para obtener la fecha y hora actuales.- Puede usarse para diversos propósitos como insertar, actualizar y recuperar datos.
- Si necesitas una marca de tiempo consistente dentro de una transacción, usa
NOW(). SYSDATE()recupera una hora diferente en cada ejecución, así que úsala cuando se necesite una marca de tiempo exacta de ejecución.- Para obtener la hora en una zona horaria diferente, usa
CONVERT_TZ().
📌 Conclusión: Si quieres obtener la fecha y hora actuales en MySQL, usar NOW() es generalmente la mejor opción! 
4. Características de la función SYSDATE()
SYSDATE() es una forma de obtener la fecha y hora actuales en MySQL, pero se comporta de manera diferente a NOW().
En esta sección, explicaremos en detalle el uso básico de SYSDATE(), sus diferencias con NOW(), y consideraciones importantes.
4.1 ¿Qué es la función SYSDATE()?
SYSDATE() es una función que devuelve la hora en la que se ejecuta la consulta.
A diferencia de NOW(), tiene la característica de recuperar una hora diferente cada vez que se ejecuta.
Sintaxis de SYSDATE()
SELECT SYSDATE();
Resultado de ejemplo
2025-02-14 16:00:45
- Devuelto en formato
YYYY-MM-DD HH:MM:SS - Se obtiene el momento exacto en que se ejecuta la consulta


