Problem:
Du vill visa ett antal sekunder som ett tidsvärde i timmar, minuter och sekunder i MySQL.
Exempel:
Vår databas har en tabell som heter athlete_score
med data i kolumnerna id
, first_name
, last_name
och score_seconds
.
id | förnamn | efternamn | score_seconds |
---|---|---|---|
1 | Emily | Watson | 1124 |
2 | Tom | Garcia | 987 |
3 | Gary | Martinez | 1003 |
4 | James | Anderson | 1233 |
För varje idrottare, låt oss få deras för- och efternamn och deras rekordtid från seconds_record
kolumn. Just nu lagras det som ett antal sekunder; låt oss visa det i HH:MM:SS-format.
Lösning:
Vi använder SEC_TO_TIME()
fungera. Här är frågan du skulle skriva:
SELECT first_name, last_name, SEC_TO_TIME(score_seconds) AS score_time FROM athlete_score;
Här är resultatet av frågan:
förnamn | efternamn | score_time |
---|---|---|
Emily | Watson | 00:18:44 |
Tom | Garcia | 00:16:27 |
Gary | Martinez | 00:16:43 |
James | Anderson | 00:20:33 |
Diskussion:
Använd SEC_TO_TIME
() funktion om du vill visa ett antal sekunder som ett tidsvärde i MySQL. Den här funktionen tar bara ett argument – antingen ett uttryck som returnerar sekunder som ett heltal eller en kolumn som lagrar ett antal sekunder som ett heltal. (I vårt exempel använder vi kolumnen score_seconds
.)
SEC_TO_TIME()
returnerar tiden i formatet TT:MM:SS, där TT är en timme från 00 till 59, MM är minuter från 01 till 59 och SS är sekunder från 00 till 59. I vårt exempel, Emily Watson poäng i sekunder är 1124 sekunder; som tidsvärde är det 18 minuter och 44 sekunder.