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

4 fonctions qui renvoient la partie des secondes à partir d'une valeur de temps dans MariaDB

Vous trouverez ci-dessous 4 fonctions qui vous permettent de renvoyer la partie des secondes à partir d'une valeur de temps dans MariaDB.

Le SECOND() Fonction

Le SECOND() la fonction renvoie la partie des secondes d'un TIME donné ou DATETIME expression. Il accepte un argument, qui est l'heure à partir de laquelle vous voulez extraire les secondes.

Exemple :

SELECT SECOND('03:45:30');

Résultat :

+--------------------+
| SECOND('03:45:30') |
+--------------------+
|                 30 |
+--------------------+

TIME les valeurs peuvent être comprises dans la plage '-838:59:59.999999' à '838:59:59.999999' . Cela inclut les microsecondes, mais SECOND() renvoie juste la partie des secondes (il y a un MICROSECOND() fonction pour renvoyer les microsecondes).

TIME les valeurs peuvent également être négatives. Dans de tels cas, SECOND() renvoie une valeur positive.

Voici une valeur de temps négative avec une partie en microsecondes :

SELECT SECOND('-838:59:59.999999');

Résultat :

+-----------------------------+
| SECOND('-838:59:59.999999') |
+-----------------------------+
|                          59 |
+-----------------------------+

La partie des secondes est extraite comme prévu.

Le EXTRACT() Fonction

Le EXTRACT() La fonction vous permet d'extraire une unité spécifiée de la valeur date/heure. Par conséquent, vous pouvez l'utiliser pour extraire les secondes (ainsi que d'autres unités) de la valeur du temps.

Exemple :

SELECT EXTRACT(SECOND FROM '10:47:01');

Résultat :

+---------------------------------+
| EXTRACT(SECOND FROM '10:47:01') |
+---------------------------------+
|                               1 |
+---------------------------------+

Le TIME_FORMAT() Fonction

Le TIME_FORMAT() La fonction vous permet de formater une valeur de temps basée sur une chaîne de format. La chaîne de format spécifie comment l'heure doit être formatée.

Vous pouvez donc utiliser cette fonction pour remonter les secondes (ainsi que les minutes et les heures) de l'heure.

Le %s et %S les spécificateurs de format renvoient tous les deux les secondes avec deux chiffres :

SELECT 
    TIME_FORMAT('10:07:30', '%s'),
    TIME_FORMAT('10:07:30', '%S');

Résultat :

+-------------------------------+-------------------------------+
| TIME_FORMAT('10:07:30', '%s') | TIME_FORMAT('10:07:30', '%S') |
+-------------------------------+-------------------------------+
| 30                            | 30                            |
+-------------------------------+-------------------------------+

Vous pouvez également utiliser le $f spécificateur de format pour renvoyer des sous-secondes à six chiffres :

SELECT 
    TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
    TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";

Résultat :

+--------------+-----------+
| Microseconds | Both      |
+--------------+-----------+
| 123456       | 30.123456 |
+--------------+-----------+

Le TIME_FORMAT() la fonction accepte un sous-ensemble des chaînes de format qui peuvent être utilisées avec le DATE_FORMAT() une fonction. Voir Chaînes de format MariaDB pour une liste complète des chaînes/spécificateurs de format pouvant être utilisés avec DATE_FORMAT() . Le TIME_FORMAT() La fonction accepte uniquement les spécificateurs de format pour les heures, les minutes et les secondes/sous-secondes. Tout autre spécificateur de format donne null ou 0 être retourné.

Le DATE_FORMAT() Fonction

Le DATE_FORMAT() La fonction vous permet de formater une valeur date ou datetime en fonction d'une chaîne de format. La chaîne de format spécifie comment la date/heure doit être formatée.

Nous pouvons donc utiliser les mêmes spécificateurs de format que nous avons utilisés avec le TIME_FORMAT() fonction dans l'exemple précédent. Cependant, DATE_FORMAT() n'accepte pas un TIME valeur, nous devrons donc passer un DATETIME valeur.

SELECT DATE_FORMAT('2023-01-01 10:07:30', '%s');

Résultat :

+------------------------------------------+
| DATE_FORMAT('2023-01-01 10:07:30', '%s') |
+------------------------------------------+
| 30                                       |
+------------------------------------------+

Passer juste un TIME la valeur ne fonctionne pas avec cette fonction :

SELECT DATE_FORMAT('10:07:30', '%s') AS '%s';

Résultat :

+------+
| %s   |
+------+
| 00   |
+------+