2013-02-22 20 views
7

私はタイムスタンプの列を持つpostgreデータベースを持っており、Pythonでデータベース内のクエリを実行し、データをJavaScriptのフロントエンドに返してflotpostgresqlのタイムスタンプをPythonのJavaScriptタイムスタンプに変換する

ここではflotはJavaScriptのTIMESTAMPを使用して自動的に日付を処理できますが、PostgreSQLタイムスタンプをJavaScript TIMESTAMPに変換する方法はわかりません(タイムスタンプではなく、答えを知りません)。私はこれが最善のアプローチであるかどうかわかりません(多分変換はJavaScriptで行うことができますか?)。これを行う方法はありますか?

+0

「Javascriptタイムスタンプ」はありません。 Javascriptの 'Date'オブジェクトがあります。 1970-01-01以降のタイムスタンプをミリ秒に変換し、その値を使用してJavascriptの「Date」オブジェクトを作成できます。 – MaxArt

+0

あなたが 'REST'を実装するために使用しているライブラリがあれば、これをサポートするはずです。ホイールを再発明しようとする前に、ライブラリがそのままサポートするかどうかを確認してください。 –

答えて

7

date_partを使用するか、postgresで抽出してタイムスタンプを返します。

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

次に、あなただけのJSは、このように*1000ミリ秒を望んでいるのに対しepochは、1970年1月1日以降であることを指摘し、直接の上にその上に送信することができます。実際に日付にする必要がある場合は、JavaScriptを受け取ったらnew Date(timestamp_from_pg)に電話して日付に変換できます。

flotはタイムスタンプを数値として処理することができるので、実際にはDateオブジェクトを作成する必要はありません。

+0

ありがとうございましたRyleyこれは私が質問したものです。私の質問では、すべての編集者が「日付」のタイムスタンプを変更する前に質問を読んでいただきありがとうございます。 –

+0

インフラストラクチャによっては、postgresからタイムスタンプを取得し、 Pythonのエポックへの変換。個人的には、私はPythonのすべての変換を可能な限り多くのデータベースサーバ上のリソースを解放するようにしています。私はこのタイプの変換が非常に簡単な操作であることは承知していますが、私のデータベースサーバは常にWebサーバよりも頑張っています。また、データベースと対話するために使用しているもの(psycopg2のようなドライバ、sqlalchemyのようなormsなど)に応じて、取得する文字列やdatetimeのようなオブジェクトをコンバートに使用できます。 –

2

PythonまたはJavascriptの「datetime」オブジェクトをJSON上に送信することはできません。 JSONはString、Ints、Floatsなどのより基本的なデータ型のみを受け入れます。

私は通常、それをテキストとして送信し、Pythonのdatetime.isoformat()を使用して、それをJavaScript側で解析します。

関連する問題