Problème :
Vous souhaitez afficher un nombre de secondes sous forme de valeur de temps en heures, minutes et secondes dans MySQL.
Exemple :
Notre base de données a une table nommée athlete_score
avec des données dans les colonnes id
, first_name
, last_name
, et score_seconds
.
identifiant | prénom | nom_de_famille | score_secondes |
---|---|---|---|
1 | Émilie | Watson | 1124 |
2 | Tom | Garcia | 987 |
3 | Gary | Martinez | 1003 |
4 | James | Anderson | 1233 |
Pour chaque athlète, récupérons leurs noms et prénoms et leur temps record à partir du seconds_record
colonne. À l'heure actuelle, il est stocké en nombre de secondes ; affichons-le au format HH:MM:SS.
Solution :
Nous utiliserons le SEC_TO_TIME()
une fonction. Voici la requête que vous écririez :
SELECT first_name, last_name, SEC_TO_TIME(score_seconds) AS score_time FROM athlete_score;
Voici le résultat de la requête :
prénom | nom_de_famille | score_time |
---|---|---|
Émilie | Watson | 00:18:44 |
Tom | Garcia | 00:16:27 |
Gary | Martinez | 00:16:43 |
James | Anderson | 00:20:33 |
Discussion :
Utilisez le SEC_TO_TIME
() si vous souhaitez afficher un nombre de secondes en tant que valeur temporelle dans MySQL. Cette fonction ne prend qu'un seul argument - soit une expression qui renvoie des secondes sous forme d'entier, soit une colonne stockant un nombre de secondes sous forme d'entier. (Dans notre exemple, nous utilisons la colonne score_seconds
.)
SEC_TO_TIME()
renvoie l'heure au format HH:MM:SS, où HH est une heure entre 00 et 59, MM sont des minutes entre 01 et 59 et SS sont des secondes entre 00 et 59. Dans notre exemple, Emily Watson le score en secondes est de 1124 secondes ; comme valeur de temps, c'est 18 minutes et 44 secondes.