2013-02-22 16 views
7
konvertieren

Ich habe eine Postgre Datenbank mit einer Timestamp Spalte und ich habe einen REST-Dienst in Python, der eine Abfrage in der Datenbank ausführt und Daten an ein JavaScript-Frontend zum Plotten eines Graphen mit flot zurückgibt .Postgresql Zeitstempel zu JavaScript Zeitstempel in Python

Nun das Problem, das ich habe ist, dass flot kann automatisch mit dem Datum mit JavaScript TIMESTAMP umgehen, aber ich weiß nicht, wie die Postgre Zeitstempel in JavaScript TIMESTAMP konvertieren (YES ein Timestamp, kein Datum zu beenden, wenn Sie nicht ' Ich kenne die Antwort in Python. Ich weiß nicht, ob das der beste Ansatz ist (vielleicht kann die Konvertierung in JavaScript gemacht werden?). Gibt es eine Möglichkeit, dies zu tun?

+0

Es gibt nichts als "Javascript Zeitstempel". Es gibt Javascript 'Date'-Objekte, das ist alles. Sie können versuchen, die Zeitstempel seit 1970-01-01 in Millisekunden zu konvertieren und diesen Wert zum Erstellen eines Javascript-Datumsobjekts verwenden. – MaxArt

+0

Welche Bibliothek Sie verwenden, um 'REST' zu implementieren, sollte dies unterstützen. Bevor Sie also versuchen, das Rad neu zu erfinden, prüfen Sie, ob die Bibliothek es unterstützt. –

Antwort

7

Verwenden Sie date_part oder extrahieren Sie in Postgres, um einen Zeitstempel zurückzugeben.

select date_part('epoch',mydatefield)*1000 from table; 

Dann können Sie einfach, dass mehr als direkt senden an und stellt fest, dass epochSekunden seit Jan 1, 1970, während JS Millisekunden, damit die *1000 will. Wenn Sie es benötigen, um ein Datum zu sein, sobald Sie es in Javascript erhalten, können Sie es in ein Datum umwandeln, indem Sie new Date(timestamp_from_pg) anrufen.

Beachten Sie, dass Flot kann von Zeitstempeln als Zahlen arbeiten, keine Notwendigkeit, tatsächlich Date Objekte zu erstellen.

+0

Danke Ryley das ist, was ich gefragt habe, Gott sei Dank lesen Sie die Frage, bevor alle Redakteure die Zeitstempel für "Datum" in meiner Frage geändert haben –

+0

Abhängig von Ihrer Infrastruktur, könnte es sinnvoll sein, nur den Zeitstempel von Postgres und tun die Umwandlung in Epoche in Python. Persönlich versuche ich, alle Konvertierungen in Python so weit wie möglich auf den Datenbankservern freizugeben. Ich weiß, dass diese Art der Konvertierung eine lächerlich triviale Operation ist, aber meine Datenbankserver arbeiten immer härter als die Webserver. Je nachdem, was Sie für die Interaktion mit der Datenbank verwenden (z. B. Treiber wie psycopg2, orms wie sqlalchemy usw.), können Sie eine Zeichenfolge oder ein datetime-ähnliches Objekt für Konvertierungen abrufen. –

2

Sie können kein "datetime" Objekt aus Python oder Javascript über JSON senden. JSON akzeptiert nur mehr grundlegende Datentypen wie Strings, Ints und Floats.

Die Art, wie ich es normalerweise mache, ist es als Text senden, mit Python datetime.isoformat() dann auf der Javascript-Seite zu analysieren.

Verwandte Themen