2017-12-08 13 views
0

Könnten Sie bitte helfen.MySQL String zu Zeitformat

In der Datenbank Zeit repräsentieren im String-Format wie 5,5 (Stunden), wie man 5.30 min

Ich versuchte

select CAST('5.50' AS DATETIME) 

select STR_TO_DATE('5.50', '%h:%i %p') ; 

aber das funktioniert nicht konvertieren.

Danke

Antwort

1

Ich weiß nicht, eine nette Art, dies zu tun, aber hier ist ein hacky Weg von der Spitze meines Kopfes.

select SEC_TO_TIME(5.5 * 3600) 

Ich Umwandlung 5.5 in Sekunden, dann von Sekunden zu einer Zeit.

hoffe, das hilft

+0

Vielen Dank Andrew –

1

Sie können eine Zeit von 5.30.00 die 5,5 Stunden Intervall Zeit 00.00.00 zu erhalten hinzuzufügen.

Dies ist jedoch:

select time '00:00:00' + interval '5.5' hour 

funktioniert nicht. MySQL schneidet die 5.5 bis 5 aus irgendeinem Grund ab. Verwenden Sie also

select time '00:00:00' + interval '5.5' * 60 * 60 second 

statt.

UPDATE: Habe gerade nachgeschaut. Dass interval 5.5 hour nicht funktioniert, wurde 2007 als Bug hier abgelegt: https://bugs.mysql.com/bug.php?id=31013.

0

Um die Zeit im Format zu erhalten hh:mm:ss Sie diese Abfrage verwenden könnte.

SELECT SUBTIME(TIME(DATE_ADD(FROM_UNIXTIME(UNIX_TIMESTAMP(0),'%Y-%m-%d %H:%i:%s'), INTERVAL 5.5*60 MINUTE)), TIME(UNIX_TIMESTAMP(0))); 

es überprüfen SQL fiddle auf out

EDIT

Falls Sie seconds Genauigkeit wollen dann die Abfrage wie folgt ändern.

SELECT SUBTIME(TIME(DATE_ADD(FROM_UNIXTIME(UNIX_TIMESTAMP(0),'%Y-%m-%d %H:%i:%s'), INTERVAL 5.501*3600 SECOND)), TIME(UNIX_TIMESTAMP(0))); 
+0

Vielen Dank, was ist, wenn Zeit mehr als 24 Stunden? –

+0

@Green_Crocodile http://sqlfiddle.com/#!9/c1f8d7/60 –

+0

Danke Peter Darmis. –