2017-12-31 18 views
4

Aus dieser Abfrage00 Werte von TIME_FORMAT()

SELECT TIME_FORMAT("19:00:00", "%H Hours, %i Minutes, %s Seconds"); 

ich das Ergebnis 19 Hours, 00 Minutes, 00 Seconds

Was ich will bekommen, ist 19 Hours Nur wenn Minutes and Seconds = 00.

Wenn ich 19:00:55 haben erwarte ich 19 Hours, 55 Seconds

zu bekommen und wenn ich 19:55:00 habe ich erwarten 19 Hours, 55 Minutes

zu erhalten, indem die 00 Werte zu entfernen unter Verwendung von SQL

+0

Versuchen Sie: 'SELECT TIME_FORMAT (" 19:00:00 ", '% H Stunden');'. – wchiquito

+0

@wchiquito Aktualisiert die Frage, um es zu klären. – Toleo

Antwort

4

Getestet habe ich diese:

SET @t = '19:00:00'; 

SELECT CONCAT_WS(', ', 
    CONCAT(NULLIF(TIME_FORMAT(@t, '%H'), '00'), ' hours'), 
    CONCAT(NULLIF(TIME_FORMAT(@t, '%i'), '00'), ' minutes'), 
    CONCAT(NULLIF(TIME_FORMAT(@t, '%s'), '00'), ' seconds')) AS time_expr; 

Ausgang:

+-----------+ 
| time_expr | 
+-----------+ 
| 19 hours | 
+-----------+ 

Wenn ich Zeit auf etwas anderes gesetzt:

SET @t = '19:00:05'; 

Ausgang:

+----------------------+ 
| time_expr   | 
+----------------------+ 
| 19 hours, 05 seconds | 
+----------------------+ 

Es behandelt auch null Stunden:

SET @t = '00:43:00'; 

Ausgang:

+------------+ 
| time_expr | 
+------------+ 
| 43 minutes | 
+------------+ 
+0

Ist es möglich, die führende '0' in einzelnen Zahlenwerten wie '09' zu" 9 "zu trimmen? – Toleo

+0

Es scheint kein Format dafür in TIME_FORMAT() zu geben, also kannst du es vielleicht mit 'TRIM (LEADING '0' FROM ...) machen'; Siehe https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_trim –

2

Sie dies versuchen.

SELECT TIME_FORMAT("19:00:00", 
    CONCAT(IF(HOUR("19:00:00") <> 0, "%H Hours", "") , 
    IF(MINUTE("19:00:00") <> 0, ", %i Minutes", "") , 
    IF(SECOND("19:00:00") <> 0, ", %s Seconds", "")) 
); 
4

Dies ist eine leichte Variation von Bills Antwort, die Plurale auf der Zeitteile Griffe:

SELECT CONCAT_WS(', ', 
       CONCAT(hour(t), ' hour', (case hour(t) when 0 then NULL when 1 then '' else 's' end)), 
       CONCAT(minute(t), ' minute', (case minute(t) when 0 then NULL when 1 then '' else 's' end)), 
       CONCAT(second(t), ' second', (case second(t) when 0 then NULL when 1 then '' else 's' end)) 
       ) AS time_expr 
from (SELECT CAST('19:01:01' as time) as t) x 
Verwandte Themen