2013-02-22 161 views
7

我有timestamp列的postgre數據庫和我有在Python REST服務執行數據庫並將數據返回查詢到JavaScript前端繪製使用flot的曲線圖。轉換的PostgreSQL時間戳爲JavaScript時間戳在Python

現在我遇到的問題是flot可以使用JavaScript的TIMESTAMP自動處理日期,但我不知道如何將Postgre時間戳轉換爲JavaScript TIMESTAMP(YES是時間戳,而不是日期停止編輯,不知道答案)在Python中。我不知道這是否是最好的方法(也許轉換可以在JavaScript中完成?)。有沒有辦法做到這一點?

+0

沒有東西作爲「Javascript時間戳」。有Javascript日期對象,就這些。您可以嘗試將時間戳轉換爲自1970-01-01以來的毫秒,並使用該值創建Javascript Date對象。 – MaxArt 2013-02-22 19:38:57

+0

無論你用什麼庫來實現'REST'都應該支持這個,所以在你試圖重新發明輪子之前,看看庫是否支持它。 – 2013-02-23 17:57:49

回答

7

使用date_part或提取的Postgres返回一個時間戳。

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

然後,你可以發送超過直接指出,epoch是自1970年1月1日,而JS想毫秒,因此*1000。如果你需要它實際上是一個日期,一旦你用Javascript接收它,你可以通過調用new Date(timestamp_from_pg)將它轉換爲日期。

注意,海軍報可以關閉時間戳數字,無需實際創建Date對象的工作。

+0

感謝Ryley這是我在問,感謝上帝,你看問題的所有編輯我的問題 – 2013-02-23 18:47:56

+0

改變「日期」時間戳根據您的基礎架構之前,它可能是有意義的只是得到的Postgres的時間戳和做轉換爲Python中的時代。就我個人而言,我嘗試在Python中保留所有轉換,以儘可能多地釋放數據庫服務器上的資源。我知道這種類型的轉換是一個可笑的小操作,但是我的數據庫服務器總是比web服務器更加努力工作。另外,根據你使用什麼來與數據庫進行交互(例如:像psycopg2這樣的驅動程序,sqlalchemy之類的驅動程序等),你檢索的內容可能是一個字符串或類似日期時間的對象來進行轉換。 – 2013-02-23 19:17:00

2

無法發送一個Python或Javascript「日期時間」對象在JSON。 JSON只接受更多基本數據類型,如Strings,Ints和Floats。

的方式,我通常做的是把它作爲文本,使用Python的datetime.isoformat()然後解析它的JavaScript端。