Dans MySQL, le TO_SECONDS()
renvoie le nombre de secondes depuis l'année 0.
Cette fonction ne doit pas être confondue avec le TIME_TO_SECONDS()
fonction, qui renvoie le nombre de secondes dans une valeur de temps donnée fournie en argument.
Syntaxe
La syntaxe ressemble à ceci :
TO_SECONDS(expr)
Où expr
est une valeur date ou datetime (à comparer à l'année 0).
Exemple 1 - Utilisation d'un argument "date"
Voici un exemple utilisant un argument de date.
SELECT TO_SECONDS('2021-09-21');
Résultat :
+--------------------------+ | TO_SECONDS('2021-09-21') | +--------------------------+ | 63799401600 | +--------------------------+
Exemple 2 - Utilisation d'un argument "datetime"
Voici un exemple utilisant un argument datetime.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Résultat :
+-----------------------------------+ | TO_SECONDS('2021-09-21 10:30:25') | +-----------------------------------+ | 63799439425 | +-----------------------------------+
Exemple 3 - Utilisation de la date actuelle
Dans cet exemple, je passe le CURDATE()
fonction comme argument afin d'utiliser la date actuelle.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Résultat :
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Exemple 4 - Utilisation de la date et de l'heure actuelles
Dans cet exemple, je passe le NOW()
fonction comme argument afin d'utiliser la date et l'heure actuelles.
SELECT TO_SECONDS(NOW()) AS 'Result';
Résultat :
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Années à deux chiffres
MySQL a des règles spéciales pour traiter les dates avec des années à deux chiffres. Les années à deux chiffres sont ambiguës car le siècle est inconnu. Fondamentalement, les règles suivantes s'appliquent :
- Valeurs d'année dans la plage
00-69
sont convertis en2000-2069
. - Valeurs d'année dans la plage
70-99
sont convertis en1970-1999
.
Pour une explication complète, consultez la documentation MySQL sur la façon dont MySQL gère les années à deux chiffres.
Voici un exemple pour illustrer :
SELECT TO_SECONDS('69-10-07') AS '69 (2069)', TO_SECONDS('70-10-07') AS '70 (1970)';
Résultat :
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Dates abrégées
Vous pouvez également utiliser des dates abrégées. Voici un exemple utilisant les valeurs de date précédentes sous forme abrégée.
SELECT TO_SECONDS('691007') AS '69 (2069)', TO_SECONDS('701007') AS '70 (1970)';
Résultat :
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Dates antérieures
La documentation MySQL avertit que le TO_SECONDS()
fonction :
n'est pas destiné à être utilisé avec des valeurs qui précèdent l'avènement du calendrier grégorien (1582), car il ne prend pas en compte les jours perdus lors du changement de calendrier. Pour les dates antérieures à 1582 (et éventuellement une année ultérieure dans d'autres paramètres régionaux), les résultats de cette fonction ne sont pas fiables.