Marca de tiempo actual en MySQL: Cómo obtener la fecha y hora actuales (NOW, SYSDATE, UTC_TIMESTAMP)

目次

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

FunctionWhat it returnsFormatNotes
NOW()Current date and timeYYYY-MM-DD HH:MM:SSMost commonly used
SYSDATE()Date and time at executionYYYY-MM-DD HH:MM:SSUnlike NOW(), it can change on each execution
CURTIME()Current timeHH:MM:SSTime only (no date)
CURRENT_TIME()Current timeHH:MM:SSSame as CURTIME()
CURRENT_TIMESTAMP()Current date and timeYYYY-MM-DD HH:MM:SSAlmost the same as NOW()
UTC_TIMESTAMP()Current UTC date and timeYYYY-MM-DD HH:MM:SSTime 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 DEFAULT de una columna (a menudo más apropiado que NOW() 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 caseRecommended function
Get the current date and timeNOW()
Get a different timestamp each time within a transactionSYSDATE()
Need only the current time (HH:MM:SS)CURTIME() or CURRENT_TIME()
Set as a table default valueCURRENT_TIMESTAMP()
Get UTC timeUTC_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()

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeCan 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()

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeReturns 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 a NOW() 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 valor DEFAULT de 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 caseRecommended function
Typical current timestamp retrievalNOW()
Use a consistent timestamp within a transactionNOW()
Need the exact execution timeSYSDATE()

🚀 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 MySQL
  • CURRENT_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)

FunctionWhat it returnsFormatNotes
CURTIME()Current time (hour/minute/second)HH:MM:SSMySQL-specific function
CURRENT_TIME()Current time (hour/minute/second)HH:MM:SSSQL-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 caseRecommended function
Need only the current time (hour/minute/second)CURTIME() or CURRENT_TIME()
Need current date and timeNOW()
Need millisecond precisionCURTIME(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) o DATE_FORMAT() para ajustar el formato/la precisión
  • Si necesitas una fecha, combínalo con CURDATE() o usa NOW()
  • 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 caseRecommended functionExample
Record the current time when inserting dataNOW()INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
Record the current time when updating dataNOW()UPDATE users SET last_login = NOW() WHERE id = 1;
Retrieve data from the past N daysNOW() - INTERVAL X DAYSELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
Retrieve data within a specific time rangeCURTIME()SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
Convert UTC time to JSTCONVERT_TZ()SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
Delete old data (older than 30 days)NOW() - INTERVAL X DAYDELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

6.10 Resumen

  • NOW() maneja la recuperación básica del timestamp actual
  • CURTIME() y CURRENT_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.

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeReturns 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() y SYSDATE() difieren en el momento de evaluación
  • CURRENT_TIMESTAMP() puede usarse como valor DEFAULT
  • Usa CONVERT_TZ() para obtener marcas de tiempo en otras zonas horarias
  • Usa DEFAULT CURRENT_TIMESTAMP para registrar automáticamente marcas de creación
  • Usa NOW() - INTERVAL X DAY para recuperar datos de los últimos X días
  • NOW(3) o NOW(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

FunctionWhat it returnsFormatNotes
NOW()Current date and timeYYYY-MM-DD HH:MM:SSMost common function
SYSDATE()Date and time at executionYYYY-MM-DD HH:MM:SSCan return different values on each evaluation
CURTIME()Current timeHH:MM:SSTime only (no date)
CURRENT_TIME()Current timeHH:MM:SSSame as CURTIME()
CURRENT_TIMESTAMP()Current date and timeYYYY-MM-DD HH:MM:SSAlmost the same as NOW()
UTC_TIMESTAMP()Current UTC date and timeYYYY-MM-DD HH:MM:SSTime 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, y SYSDATE() cuando necesite marcas de tiempo de ejecución exactas .
  • Use CURTIME() solo para la hora, y CONVERT_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.