En MySQL, el TO_SECONDS()
función devuelve el número de segundos desde el año 0.
Esta función no debe confundirse con TIME_TO_SECONDS()
función, que devuelve el número de segundos en un valor de tiempo dado proporcionado como argumento.
Sintaxis
La sintaxis es así:
TO_SECONDS(expr)
Donde expr
es un valor de fecha o fecha y hora (para comparar con el año 0).
Ejemplo 1:usar un argumento de "fecha"
Aquí hay un ejemplo usando un argumento de fecha.
SELECT TO_SECONDS('2021-09-21');
Resultado:
+--------------------------+ | TO_SECONDS('2021-09-21') | +--------------------------+ | 63799401600 | +--------------------------+
Ejemplo 2:uso de un argumento 'datetime'
Aquí hay un ejemplo usando un argumento de fecha y hora.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Resultado:
+-----------------------------------+ | TO_SECONDS('2021-09-21 10:30:25') | +-----------------------------------+ | 63799439425 | +-----------------------------------+
Ejemplo 3:uso de la fecha actual
En este ejemplo, paso el CURDATE()
funcionar como argumento para usar la fecha actual.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Resultado:
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Ejemplo 4:uso de la fecha y la hora actuales
En este ejemplo, paso el NOW()
funcionar como argumento para usar la fecha y hora actual.
SELECT TO_SECONDS(NOW()) AS 'Result';
Resultado:
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Años de dos dígitos
MySQL tiene reglas especiales para manejar fechas con años de dos dígitos. Los años de dos dígitos son ambiguos porque se desconoce el siglo. Básicamente, se aplican las siguientes reglas:
- Valores de año en el rango
00-69
se convierten a2000-2069
. - Valores de año en el rango
70-99
se convierten a1970-1999
.
Para obtener una explicación completa, consulte la documentación de MySQL sobre cómo MySQL trata con años de dos dígitos.
Aquí hay un ejemplo para demostrarlo:
SELECT TO_SECONDS('69-10-07') AS '69 (2069)', TO_SECONDS('70-10-07') AS '70 (1970)';
Resultado:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Fechas abreviadas
También puede utilizar fechas abreviadas. Aquí hay un ejemplo que usa los valores de fechas anteriores en forma abreviada.
SELECT TO_SECONDS('691007') AS '69 (2069)', TO_SECONDS('701007') AS '70 (1970)';
Resultado:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Fechas anteriores
La documentación de MySQL advierte que TO_SECONDS()
función:
no está diseñado para usarse con valores que preceden al advenimiento del calendario gregoriano (1582), porque no tiene en cuenta los días que se perdieron cuando se cambió el calendario. Para fechas anteriores a 1582 (y posiblemente un año posterior en otras localidades), los resultados de esta función no son confiables.