Función UNIX_TIMESTAMP() de MySQL
La función `UNIX_TIMESTAMP()` de MySQL devuelve la marca de tiempo Unix actual, que es el número de segundos que han transcurrido desde '1970-01-01 00:00:00' UTC. También puede convertir una expresión de fecha proporcionada en una marca de tiempo Unix.
Utilización
La función `UNIX_TIMESTAMP()` se utiliza para recuperar la marca de tiempo actual o convertir un valor de fecha y hora en un formato de marca de tiempo Unix. Esto es especialmente útil para las comparaciones de fechas y el almacenamiento.
sql
UNIX_TIMESTAMP([date]);
En esta sintaxis, `fecha` es un argumento opcional que representa la fecha que deseas convertir. Debe ser una expresión de fecha válida. Los formatos de fecha no válidos pueden dar lugar a un valor de retorno `NULL` o a un error, dependiendo del modo SQL. Si se omite, la función devuelve la marca de tiempo actual.
Ejemplos
1. Marca de tiempo Unix actual
sql
SELECT UNIX_TIMESTAMP();
Este ejemplo devuelve la marca de tiempo Unix actual en el momento de la ejecución.
2. Convertir una fecha concreta en un sello de tiempo Unix
sql
SELECT UNIX_TIMESTAMP('2023-10-10 10:00:00');
Esta consulta convierte la fecha y hora especificadas en una marca de tiempo Unix, proporcionando una representación numérica. Ten en cuenta que la función devuelve un valor entero que representa segundos, no segundos fraccionarios.
3. Utilizar UNIX_TIMESTAMP() en una cláusula WHERE
sql
SELECT *
FROM events
WHERE event_time < FROM_UNIXTIME(UNIX_TIMESTAMP() - 86400);
En este ejemplo, la función se utiliza para encontrar todos los eventos que ocurrieron hace más de 24 horas, comparando la hora del evento con la marca de tiempo actual menos 86.400 segundos (un día). Asume que `event_time` se almacena en un formato compatible con `FROM_UNIXTIME()`, como una marca de tiempo Unix o un formato de fecha-hora convertible.
Consejos y buenas prácticas
- Omite el argumento de la hora actual. Cuando necesites la marca de tiempo actual, utiliza `UNIX_TIMESTAMP()` sin argumentos para simplificar.
- Almacena marcas de tiempo para mayor portabilidad. Utiliza marcas de tiempo Unix para almacenar la fecha-hora de forma coherente en distintos sistemas y zonas horarias.
- Combínalo con FROM_UNIXTIME(). Utiliza `FROM_UNIXTIME()` para convertir las marcas de tiempo a un formato de fecha legible cuando sea necesario.
- Ten en cuenta las zonas horarias. Recuerda que las marcas de tiempo Unix están en UTC. Se supone que cualquier argumento de fecha proporcionado está en la zona horaria de la sesión actual, a menos que se especifique lo contrario. Ajústalo a las zonas horarias locales según sea necesario.
- Tratamiento de errores para fechas no válidas. Ten en cuenta que las expresiones de fecha no válidas pueden devolver `NULL` o un error, y trata estos casos adecuadamente.
- Legibilidad humana. Aunque las marcas de tiempo Unix son eficientes para el almacenamiento, son menos legibles para el ser humano. Considera la posibilidad de registrar o almacenar la fecha-hora original como referencia si es necesario para la depuración.