2017-12-29 48 views
0
select from_unixtime(floor(1510156036741/1000), '%Y %D %M %h:%i:%s'); 

'2017 8th November 07.47.16'Konvertieren MySQL BigInt (20), UNIX-Epoche Zeit Datumzeit (3)

Der obige Code einen Zeitstempel ausgibt, die nicht Millisekunde Präzision nicht enthält. Wie würde ich eine Unix-Epochenzeit in ein datetime (3) -Objekt konvertieren, das Millisekunden enthält?

Es ist möglich, Mikrosekunden zu erhalten wie:

select from_unixtime(1510156036741/1000, '%Y %D %M %h:%i:%s %f'); 

'2017 8. November 07.47.16 741000'

Ist es möglich, das Mikro Ergebnis Millisekunden zu konvertieren?

+0

Seit es gibt keinen Formatcode dafür, ich würde nur die letzten drei Zeichen der Mikrosekunden verwerfen. Komplizierter, wenn Sie runden wollen, nicht abgeschnitten natürlich. –

+0

Ich habe versucht, die letzten drei Zeichen des Mikrosekunden-Codes zu verwerfen, indem ich dividiere durch 1000 wie: select from_unitime (floor (1510156036741/1000), '% Y% D% M% h:% i:% s' '% f'/1000); Die Abfrage hat jedoch nichts ausgegeben. Wie würde ich die letzten drei Charaktere ablegen? – ajasif

+0

Mit String-Operationen, keine numerischen Operationen. d.h. "SUBSTR". Moobs Antwort ist ein anderer Ansatz. –

Antwort

1

Es ist ein wenig klobig, aber Sie können die Mikrosekunde extrahieren und durch 1000 teilen, um es in Millisekunden zu konvertieren. Hier habe ich werfe es auch in einem int und verkettet sie mit dem formatierten Datum der Endtermin Zeichenfolge zu erstellen:

SELECT CONCAT(
    from_unixtime(1510156036741/1000, '%Y %D %M %h:%i:%s '), 
    CAST(EXTRACT(MICROSECOND FROM from_unixtime(1510156036741/1000))/1000 
    AS SIGNED) 
); 

„2017 8. November 03.47.16 741“

Verwandte Themen