2016-07-23 9 views
0

Ich muss einen Zeitstempel, der als DECIMAL (16, 4) in der Datenbank gespeichert wird, in DATETIME konvertieren, wenn es aus der Datenbank in einer Auswahl gezogen wird, wenn möglich.Konvertieren von DECIMAL (16,4) in DATETIME MySQL

Die Art und Weise sie in der Datenbank gespeichert werden wie folgt dar:

$time = function_exists('microtime') ? microtime(true) : time(); 
$submit_time = number_format($time, 4, '.', ''); 

Than $submit_time geht in der Datenbank mit Spalte submit_time.

Ist es möglich, diesen Wert und CONVERT es zu einem DATETIME Wert zu extrahieren, wenn Sie es aus der Datenbank ziehen? Der Grund, warum ich es in konvertieren möchte, ist, dass es einfacher zu verwalten wäre, wenn nach Daten gesucht wird, die mit Paginierung ausgegeben werden.

worden Blick auf die CONVERT Funktion MySQL, und haben die folgende versucht, aber es gibt leeren Inhalt:

SELECT CONVERT(submit_time, DATETIME) AS datetime

Jede Hilfe natürlich sehr zu schätzen!

Bitte beachten Sie, ich habe die Antwort gesehen, die zu dieser Frage getaggt ist, und es hilft meiner Situation nicht. Erstens geben alle Antworten, außer 1, PHP-Code zurück, der sie konvertiert, und zweitens funktioniert die angenommene Antwort in SQL für CONVERT aus einer Reihe von Gründen nicht in MySQL: 1 in SQL sieht aus, als gäbe es 3 Parameter für CONVERT , aber in MySQL nur 2. Auch CONVERT in MySQL funktioniert entweder anders, oder ist nicht die richtige Funktion und diese Antwort ist falsch.

+0

Diese von Hilfe sein sollte http://stackoverflow.com/questions/14248678/convert-decimal-stored -as-varchar-to-datetime –

+0

Mögliches Duplikat von [Konvertierung von Dezimal (16,4) nach DATE oder DATETIME in SQL oder PHP] (http://stackoverflow.com/questions/10102749/how-to-convert- Dezimal16-4-bis-Datum-oder-Datum me-in-sql-or-php) –

+0

Nein ist es nicht, wie für die in der Frage genannten Gründen. Danke trotzdem. –

Antwort

2

Abhängig von benötigten Genauigkeit

select from_unixtime(round(submit_time)) as datetime -- 2012-04-10 09:00:26

oder

select from_unixtime(submit_time) as datetime -- 2012-04-10 09:00:25.5900

+0

Danke, die 2. 1 hat es richtig für mich gemacht, brauchte nur 'DATE_FORMAT' und extrahierte nur das Jahr, den Monat, den Tag, die Stunde, die Minute, die Sekunden daraus. Prost. "RUNDE" verursachte einige Probleme, da es anscheinend die gesamte Saite aufgerundet hat. –