- 1 1. Introducción
- 2 2. Funciones MySQL para obtener la fecha/hora actual (tabla comparativa)
- 3 3. Detalles de la función NOW()
- 4 4. Características de la función SYSDATE()
- 5 5. CURTIME() y CURRENT_TIME()
- 5.1 5.1 ¿Qué es CURTIME()?
- 5.2 5.2 ¿Qué es CURRENT_TIME()?
- 5.3 5.3 CURTIME() vs CURRENT_TIME() (Comparación)
- 5.4 5.4 Ejemplos prácticos de CURTIME() / CURRENT_TIME()
- 5.5 5.5 Limitaciones y notas para CURTIME() / CURRENT_TIME()
- 5.6 5.6 ¿Cuándo debería usar CURTIME() / CURRENT_TIME()?
- 5.7 5.7 Resumen de CURTIME() / CURRENT_TIME()
- 6 6. Ejemplos Prácticos de Consultas Usando la Hora Actual
- 6.1 6.1 Registrar la hora actual al insertar datos
- 6.2 6.2 Registrar la hora actual al actualizar datos
- 6.3 6.3 Recuperar datos de los últimos N días
- 6.4 6.4 Recuperar datos creados dentro de un rango de tiempo específico
- 6.5 6.5 Recuperar la hora actual teniendo en cuenta zonas horarias
- 6.6 6.6 Establecer la hora de creación de un registro al timestamp actual por defecto
- 6.7 6.7 Eliminar datos después de un cierto tiempo
- 6.8 6.8 Obtener la hora actual con precisión de milisegundos (microsegundos)
- 6.9 6.9 Guía de Selección de Casos de Uso
- 6.10 6.10 Resumen
- 7 7. Preguntas Frecuentes (FAQ)
- 7.1 7.1 ¿Cuál es la diferencia entre NOW() y SYSDATE()?
- 7.2 7.2 ¿Son CURRENT_TIMESTAMP() y NOW() lo mismo?
- 7.3 7.3 ¿Cómo obtengo la hora actual en una zona horaria específica?
- 7.4 7.4 ¿Cómo puedo registrar automáticamente la hora actual?
- 7.5 7.5 ¿Cómo recupero datos de los últimos N días?
- 7.6 7.6 ¿Cómo obtengo la hora actual con precisión de milisegundos (microsegundos)?
- 7.7 7.7 Resumen
- 8 8. Resumen
1. Introducción
Obtener la hora actual en MySQL es una parte crucial de la gestión de bases de datos.
Por ejemplo, puede que necesite obtener la hora actual en situaciones como las siguientes:
- Registrar automáticamente una marca de tiempo de creación al insertar datos (p. ej., una marca de tiempo cuando un nuevo usuario se registra)
- Registrar los tiempos de inicio de sesión de los usuarios (p. ej., gestionar el historial de inicios de sesión)
- Recuperar datos dentro de un rango de tiempo determinado (p. ej., obtener el historial de pedidos de las últimas 24 horas)
- Registrar los logs de ejecución del sistema (p. ej., gestionar los logs de errores y de eventos)
Como puede ver, obtener correctamente la “hora actual” para la gestión de datos y el registro de eventos es esencial para operar una base de datos.
En este artículo, explicaremos cómo obtener la hora actual en MySQL en detalle mediante consultas SQL reales.
También cubriremos las diferencias entre las funciones más usadas, cómo elegir la adecuada y ejemplos prácticos de consultas, útiles tanto para principiantes como para usuarios intermedios.
2. Funciones MySQL para obtener la fecha/hora actual (tabla comparativa)
MySQL ofrece múltiples funciones para obtener la hora actual.
Seleccionar la función adecuada para su caso de uso es importante, pero muchas personas encuentran confusas las diferencias.
En esta sección, comparamos las funciones principales usadas para obtener la fecha/hora actual en MySQL y explicamos sus características en detalle.
2.1 Tabla comparativa de funciones de tiempo MySQL
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most commonly used |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Unlike NOW(), it can change on each execution |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time zone is fixed to UTC |
De la tabla anterior, la mayoría de las funciones devuelven ya sea la “fecha y hora actual” o la “hora actual”, pero la mejor función depende de su propósito.
2.2 Visión general y características de cada función
Función NOW()
- La función más común para obtener la fecha y hora actual
- Devuelve la hora en el momento en que comienza la sentencia SQL
- Se usa frecuentemente para marcas de tiempo al insertar o actualizar datos
SELECT NOW();
Salida de ejemplo
2025-02-14 15:30:45
Función SYSDATE()
- Obtiene la hora actual en el momento de la ejecución
- A diferencia de NOW(), SYSDATE() puede devolver un valor diferente cada vez que se evalúa (puede cambiar incluso dentro de una transacción)
SELECT SYSDATE();
Salida de ejemplo
2025-02-14 15:30:47
Función CURTIME()
- Obtiene solo la hora (HH:MM:SS)
- Útil cuando no se necesita la fecha
SELECT CURTIME();
Salida de ejemplo
15:30:45
Función CURRENT_TIME()
- Funciona igual que CURTIME()
- Nombre de función conforme al estándar SQL
SELECT CURRENT_TIME();
Salida de ejemplo
15:30:45
Función CURRENT_TIMESTAMP()
- Se comporta como NOW()
- Puede especificarse como valor
DEFAULTde una columna (a menudo más apropiado queNOW()para valores predeterminados)SELECT CURRENT_TIMESTAMP();
Salida 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
);
Función UTC_TIMESTAMP()
- Obtiene la hora UTC actual (Tiempo Universal Coordinado)
- No depende de la zona horaria del servidor, lo que permite marcas de tiempo consistentes
SELECT UTC_TIMESTAMP();
Salida de ejemplo
2025-02-14 06:30:45
2.3 ¿Qué función debería usar?
| Use case | Recommended function |
|---|---|
| Get the current date and time | NOW() |
| Get a different timestamp each time within a transaction | SYSDATE() |
| Need only the current time (HH:MM:SS) | CURTIME() or CURRENT_TIME() |
| Set as a table default value | CURRENT_TIMESTAMP() |
| Get UTC time | UTC_TIMESTAMP() |
En general, para la recuperación típica de fecha/hora, NOW() suele ser la opción correcta.
Sin embargo, seleccionar la mejor función para su caso de uso permite operaciones de datos más flexibles y fiables.
3. Detalles de la función NOW()
La función NOW() de MySQL es la función más utilizada para obtener la fecha y hora actual (fecha + hora).
Se usa ampliamente para almacenar marcas de tiempo en la base de datos y recuperar datos dentro de rangos de tiempo específicos.
3.1 Uso básico de NOW()
Sintaxis de NOW()
SELECT NOW();
Salida de ejemplo
2025-02-14 15:30:45
- El formato de salida es
YYYY-MM-DD HH:MM:SS(año-mes-día hora:minuto:segundo). - La hora se obtiene según la configuración de zona horaria predeterminada de MySQL.
3.2 Casos de uso comunes de NOW()
① Registrar la hora actual al insertar datos
Al insertar datos en una base de datos, puedes usar NOW() para registrar una 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 de un período de tiempo determinado
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
- Al especificar
INTERVAL 1 DAY, puedes obtener “datos del último día”.
3.3 Tipo de retorno y cómo cambiar el formato de salida
Tipo de retorno de NOW()
- Tipo
DATETIME(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;
Ejemplo de salida
2025-02-14 15:30:45
3.4 Diferencias entre NOW() y SYSDATE()
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Can return different timestamps within the same statement |
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Ejemplo de salida
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
🚨 Si trabajas con transacciones, se recomienda NOW() para mantener la consistencia.
3.5 Limitaciones y notas para NOW()
① Depende de la zona horaria
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
② Para valores predeterminados de tabla, usa CURRENT_TIMESTAMP
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3.6 Resumen de NOW()
NOW()es la función más común para obtener la fecha y hora actuales en MySQL.- Puede usarse para inserciones, actualizaciones y recuperación de datos basados en tiempo.
- Utiliza
NOW()cuando necesites una marca de tiempo consistente dentro de una transacción. SYSDATE()devuelve una hora distinta en cada evaluación, así que úsala cuando necesites el tiempo exacto de ejecución.- Usa
CONVERT_TZ()para obtener la hora en una zona horaria diferente.
📌 Conclusión: En la mayoría de los casos, NOW() es la mejor opción para obtener la fecha y hora actuales en MySQL.

4. Características de la función SYSDATE()
La función SYSDATE() es otra forma de obtener la fecha y hora actuales en MySQL, pero se comporta de manera diferente a NOW().
En esta sección, explicaremos el uso básico de SYSDATE(), cómo difiere de NOW() y notas importantes.
4.1 ¿Qué es SYSDATE()?
SYSDATE() es una función que devuelve la hora en el momento de la ejecución de la sentencia.
A diferencia de NOW(), devuelve una marca de tiempo diferente cada vez que se evalúa.
Sintaxis de SYSDATE()
SELECT SYSDATE();
Ejemplo de salida
2025-02-14 16:00:45
- Devuelto en el formato
YYYY-MM-DD HH:MM:SS - Representa el momento en que se ejecuta la consulta
4.2 Diferencias entre SYSDATE() y NOW()
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns a different timestamp each time |
Comparación de comportamiento: NOW() vs SYSDATE()
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Ejemplo de salida
NOW() | SLEEP(3) | NOW()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:48
📌 Puntos clave
NOW()mantiene la marca de tiempo desde el inicio de la sentencia, por lo que no cambia.SYSDATE()devuelve una marca de tiempo diferente cada vez que se evalúa, por lo que cambia después de 3 segundos.
🚨 Usa NOW() para el procesamiento de transacciones
- Porque
SYSDATE()puede comportarse de manera diferente aNOW()en entornos multihilo,NOW()se recomienda generalmente para la consistencia transaccional.
4.3 Ejemplos de uso de SYSDATE()
① Registrar la hora actual al insertar datos
INSERT INTO logs (event, created_at) VALUES ('User login', SYSDATE());
② Registrar la hora actual al actualizar datos
UPDATE users SET last_login = SYSDATE() WHERE id = 1;
③ Obtener la hora actual en un formato específico
SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
Salida de ejemplo
2025-02-14 16:05:30
4.4 Limitaciones y notas para SYSDATE()
① Comportamiento en transacciones
NOW()mantiene la marca de tiempo desde el inicio de la sentencia, por lo que puede usarse de forma consistente dentro de una transacción.SYSDATE()devuelve una marca de tiempo diferente en cada llamada, por lo que puede producirse una deriva temporal dentro de una transacción.
② No puede usarse como valor DEFAULT
SYSDATE()no puede establecerse como valorDEFAULTde una columna de tabla .
✅ Solución: Use DEFAULT CURRENT_TIMESTAMP.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.5 ¿Cuándo debería usar SYSDATE()?
| Use case | Recommended function |
|---|---|
| Typical current timestamp retrieval | NOW() |
| Use a consistent timestamp within a transaction | NOW() |
| Need the exact execution time | SYSDATE() |
🚀 SYSDATE() es adecuado para registro en tiempo real, pero no es ideal para procesamiento de transacciones.
4.6 Resumen de SYSDATE()
- SYSDATE() obtiene la marca de tiempo en el momento de la ejecución, a diferencia de
NOW(). - Debido a que puede devolver valores diferentes en cada llamada, es útil para registro en tiempo real.
- Para consistencia transaccional, se recomienda
NOW(). - Para valores por defecto, use
CURRENT_TIMESTAMP.
📌 Conclusión: Para la obtención general de marcas de tiempo, NOW() es la mejor opción; para tiempos de ejecución exactos, elija SYSDATE().
5. CURTIME() y CURRENT_TIME()
Cuando desea obtener la hora actual en MySQL, CURTIME() y CURRENT_TIME() se utilizan cuando solo necesita hora (HH:MM:SS). En esta sección, explicaremos el uso básico, las diferencias y ejemplos prácticos de cada una.
5.1 ¿Qué es CURTIME()?
CURTIME() es una función que obtiene la hora actual (hora, minuto, segundo) en MySQL. Su característica principal es que no incluye la fecha; solo se devuelve la parte de la hora.
Sintaxis de CURTIME()
SELECT CURTIME();
Salida de ejemplo
16:30:45
- Formato:
HH:MM:SS - Depende de la configuración de zona horaria del servidor
- A diferencia de
NOW(), es adecuado cuando no necesita información de fecha
5.2 ¿Qué es CURRENT_TIME()?
CURRENT_TIME(), al igual que CURTIME(), es una función que obtiene la hora actual (HH:MM:SS). En la práctica, se comporta exactamente igual que CURTIME().
Sintaxis de CURRENT_TIME()
SELECT CURRENT_TIME();
Salida de ejemplo
16:30:45
📌 ¿Cuál es la diferencia?
CURTIME()es específico de MySQLCURRENT_TIME()es estándar SQL- Se comportan igual
- Elija según la preferencia de legibilidad (sin diferencia de rendimiento)
5.3 CURTIME() vs CURRENT_TIME() (Comparación)
| Function | What it returns | Format | Notes |
|---|---|---|---|
| CURTIME() | Current time (hour/minute/second) | HH:MM:SS | MySQL-specific function |
| CURRENT_TIME() | Current time (hour/minute/second) | HH:MM:SS | SQL-standard function |
5.4 Ejemplos prácticos de CURTIME() / CURRENT_TIME()
① Registrar la hora actual al insertar datos
INSERT INTO user_logs (event, event_time) VALUES ('Login', CURTIME());
② Filtrado (recuperar datos dentro de un rango de tiempo específico)
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
③ Cambiar precisión (incluir milisegundos)
SELECT CURTIME(3); -- Display up to 3 fractional digits
Salida de ejemplo
16:30:45.123
5.5 Limitaciones y notas para CURTIME() / CURRENT_TIME()
① No hay información de fecha, por lo que debe combinarse con una fecha cuando sea necesario
SELECT CONCAT(CURDATE(), ' ', CURTIME()) AS full_datetime;
② Al usar como valor DEFAULT
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event_time TIME DEFAULT CURTIME()
);
5.6 ¿Cuándo debería usar CURTIME() / CURRENT_TIME()?
| Use case | Recommended function |
|---|---|
| Need only the current time (hour/minute/second) | CURTIME() or CURRENT_TIME() |
| Need current date and time | NOW() |
| Need millisecond precision | CURTIME(3) |
📌 En la mayoría de los casos, tanto CURTIME() como CURRENT_TIME() funcionan bien.
Elige la que te resulte más legible.
5.7 Resumen de CURTIME() / CURRENT_TIME()
CURTIME()es específico de MySQL;CURRENT_TIME()es estándar SQL- Ambos recuperan la hora actual (HH:MM:SS)
- Usa
CURTIME(3)oDATE_FORMAT()para ajustar el formato/la precisión - Si necesitas una fecha, combínalo con
CURDATE()o usaNOW() - Para valores por defecto, se usa comúnmente
CURRENT_TIMESTAMP
📌 Conclusión: Si solo necesitas la hora actual, CURTIME() es una opción sólida.
6. Ejemplos Prácticos de Consultas Usando la Hora Actual
Ahora que entiendes cómo obtener la hora actual en MySQL, veamos formas prácticas de usarla.
En esta sección, presentaremos ejemplos de consultas del mundo real usando la hora actual.
Aprenderás técnicas útiles para tareas diarias de bases de datos, como inserciones, actualizaciones y búsquedas.
6.1 Registrar la hora actual al insertar datos
① Registrar la hora actual cuando un usuario se registra
INSERT INTO users (name, email, created_at)
VALUES ('Sato', 'sato@example.com', NOW());
6.2 Registrar la hora actual al actualizar datos
② Registrar la marca de tiempo del último inicio de sesión del usuario
UPDATE users SET last_login = NOW() WHERE id = 1;
6.3 Recuperar datos de los últimos N días
③ Recuperar datos de pedidos de los últimos 7 días
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
6.4 Recuperar datos creados dentro de un rango de tiempo específico
④ Recuperar datos creados hoy entre las 9:00 y las 18:00
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
6.5 Recuperar la hora actual teniendo en cuenta zonas horarias
⑤ Convertir la hora UTC a hora de Japón (JST)
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
6.6 Establecer la hora de creación de un registro al timestamp actual por defecto
⑥ Establecer automáticamente created_at al timestamp actual
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
6.7 Eliminar datos después de un cierto tiempo
⑦ Eliminar datos más antiguos de 30 días
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
6.8 Obtener la hora actual con precisión de milisegundos (microsegundos)
⑧ Obtener el timestamp actual con precisión de milisegundos
SELECT NOW(3);
Ejemplo de salida
2025-02-14 16:30:45.123
6.9 Guía de Selección de Casos de Uso
| Use case | Recommended function | Example |
|---|---|---|
| Record the current time when inserting data | NOW() | INSERT INTO users (name, created_at) VALUES ('Sato', NOW()); |
| Record the current time when updating data | NOW() | UPDATE users SET last_login = NOW() WHERE id = 1; |
| Retrieve data from the past N days | NOW() - INTERVAL X DAY | SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY; |
| Retrieve data within a specific time range | CURTIME() | SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00'; |
| Convert UTC time to JST | CONVERT_TZ() | SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo'); |
| Delete old data (older than 30 days) | NOW() - INTERVAL X DAY | DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY; |
6.10 Resumen
NOW()maneja la recuperación básica del timestamp actualCURTIME()yCURRENT_TIME()son útiles cuando solo necesitas la hora- Puedes usar la hora actual para consultas de ventanas temporales, filtrado por hora del día y timestamps con precisión de milisegundos
- Debido a que los timestamps dependen de zonas horarias, usa
CONVERT_TZ()para obtener la hora correcta - Para la gestión del tamaño de la base de datos, diseñar un mecanismo que elimine automáticamente datos antiguos también es importante
📌 Conclusión: Usar la hora actual de manera eficaz te ayuda a gestionar los datos más eficientemente en MySQL.
7. Preguntas Frecuentes (FAQ)
A continuación se presentan preguntas frecuentes (FAQ) sobre cómo obtener la hora actual en MySQL. Cada pregunta se responde de forma clara y concisa.
7.1 ¿Cuál es la diferencia entre NOW() y SYSDATE()?
Respuesta
Tanto NOW() como SYSDATE() recuperan la fecha y hora actuales, pero difieren en cuándo se evalúa el valor.
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns a different timestamp on each evaluation |
Ejemplo de prueba
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Ejemplo de salida
NOW() | SLEEP(3) | NOW()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:48
🚨 Para el procesamiento de transacciones, generalmente se recomienda NOW().
7.2 ¿Son CURRENT_TIMESTAMP() y NOW() lo mismo?
Respuesta
Se comportan casi igual, pero CURRENT_TIMESTAMP() puede usarse como valor DEFAULT.
Ejemplo al crear una tabla
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.3 ¿Cómo obtengo la hora actual en una zona horaria específica?
Respuesta
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
7.4 ¿Cómo puedo registrar automáticamente la hora actual?
Respuesta
Al crear una tabla, especifica DEFAULT CURRENT_TIMESTAMP para almacenar automáticamente la hora actual en created_at.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.5 ¿Cómo recupero datos de los últimos N días?
Respuesta
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
7.6 ¿Cómo obtengo la hora actual con precisión de milisegundos (microsegundos)?
Respuesta
SELECT NOW(3);
Ejemplo de salida
2025-02-14 16:30:45.123
7.7 Resumen
NOW()ySYSDATE()difieren en el momento de evaluaciónCURRENT_TIMESTAMP()puede usarse como valorDEFAULT- Usa
CONVERT_TZ()para obtener marcas de tiempo en otras zonas horarias - Usa
DEFAULT CURRENT_TIMESTAMPpara registrar automáticamente marcas de creación - Usa
NOW() - INTERVAL X DAYpara recuperar datos de los últimos X días NOW(3)oNOW(6)admiten marcas de tiempo con precisión de milisegundos/microsegundos
📌 Conclusión: Elegir la función de tiempo adecuada de MySQL es esencial para trabajar con marcas de tiempo actuales.
8. Resumen
En este artículo, explicamos cómo obtener la hora actual en MySQL.
Enfocándonos en la función NOW(), cubrimos las diferencias entre funciones similares, ejemplos prácticos de consultas y notas importantes.
8.1 Principales funciones de MySQL para obtener la hora actual
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most common function |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Can return different values on each evaluation |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time zone fixed to UTC |
📌 Conclusión:
- Para la recuperación general de la marca de tiempo actual,
NOW()suele ser la mejor opción. - Si necesitas la hora exacta de ejecución, usa
SYSDATE(). - Si solo necesitas la hora (sin fecha), elige
CURTIME().
8.2 Consultas prácticas usando la hora actual
Registrar la hora actual al insertar datos
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 de los últimos 7 días
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
Recuperar la hora considerando zonas horarias
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
Eliminar datos antiguos (más de 30 días)
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
8.3 Notas sobre zonas horarias
NOW()de MySQL depende de la configuración de zona horaria predeterminada, por lo que los resultados pueden variar entre entornos.- Usa
CONVERT_TZ()para obtener marcas de tiempo en otra zona horaria. - Si deseas cambiar la zona horaria del servidor:
SET GLOBAL time_zone = 'Asia/Tokyo';
8.4 Preguntas frecuentes sobre funciones de tiempo actuales de MySQL
P1. ¿Cuál es la diferencia entre NOW() y SYSDATE()?
➡ NOW() obtiene la hora al inicio de la consulta, mientras que SYSDATE() la obtiene en el momento de la ejecución.
P2. ¿Son CURRENT_TIMESTAMP() y NOW() lo mismo?
➡ Son casi iguales, pero CURRENT_TIMESTAMP() puede usarse como valor DEFAULT.
P3. ¿Cómo obtengo la hora actual con precisión de milisegundos (microsegundos)?
➡ Usa NOW(3) (milisegundos) o NOW(6) (microsegundos).
SELECT NOW(3); -- Example: 2025-02-14 16:30:45.123
8.5 Resumen
- En MySQL, seleccionar la función adecuada para la hora actual es importante .
- Use
NOW()para casos típicos, ySYSDATE()cuando necesite marcas de tiempo de ejecución exactas . - Use
CURTIME()solo para la hora, yCONVERT_TZ()para la conversión de zona horaria . - Puede usar la hora actual en inserciones, actualizaciones, búsquedas y eliminaciones .
📌 Conclusión: Domine las funciones de tiempo de MySQL para gestionar los datos de manera más eficiente.


