Mysql
 sql >> Base de données >  >> RDS >> Mysql

TO_SECONDS() Exemples – MySQL

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)

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 en 2000-2069 .
  • Valeurs d'année dans la plage 70-99 sont convertis en 1970-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.