2017-09-14 3 views
0

問題: 私はPostgresテーブルにテキストとしていくつかの日付を格納していましたが、Postgresで実際の日付に変換したいと思います。Pythonの日付文字列をpostgresの使用可能日に

これを行うより良い方法があるのか​​間違っているのかわかりません。私はPostgreSQLデータベースにたくさんのデータをテキスト形式で取り込んだ。その結果、私は戻ってそれをきれいにする必要があります。私はデータに問題があります。 PostgreSQLが使用できる形式に変換する必要があります。私はそれをpythonに引き戻し、変換してそれを元に戻そうとしました。これを行うにはこれが最善の方法ですか?また、私はdatetime.strptimeとの問題を抱えています..私は指示が正しいが、行っていないと思う。 :/

import psycopg2 
from datetime import datetime 

# connect to the PostgreSQL database 
conn = psycopg2.connect(
"dbname='postgres' user='postgres' host=10.0.75.1 password='mysecretpassword'") 
# create a new cursor 
cur = conn.cursor() 
cur.execute("""SELECT "Hash","Date" FROM nas """) 
# commit the changes to the database 
myDate = cur.fetchall() 

for rows in myDate: 
    target = rows[1] 

datetime.strptime(target, '%B %d, %Y, %H:%M:%S %p %Z') 

enter image description here

ここ

enter image description here

+1

私は混乱しています。あなたがPostgresを選択している場合、Postgresがデータを使用できないという問題はどこで起こりますか? –

+0

混乱して申し訳ありません。 Postgresはそれらをテキストデータ型とみなします。これを正しいdateZ型に変換しようとすると、正しい形式でないためにエラーが発生します。 – Mal229

+1

私はまだPostgresがどこでプレーするのか見ていません。 Postgresからデータを選択していますが、それ以外の方法ではありません。なぜあなたのPythonスクリプトの日付のフォーマットはPostgresと関係がありますか? –

答えて

1

実際のタイムスタンプにあなたの文字列を変換することができPostgresのクエリです:完全な解決のために

select 
    ts_col, 
    to_timestamp(ts_col, 'Month DD, YYYY HH:MI:SS PM')::timestamp with time zone 
from your_table; 

は、次がかかる場合がありますステップ:

  • その後、更新がになりますテキスト


を含む古い列を削除し、テーブル内の列は、上記のクエリ

  • からロジックを使用して
  • 更新を新しいタイムスタンプ列ts_col_newを作成このように:

  • +0

    ありがとうございました!ええ、TZを落としてしまえば、うれしかったです。あなたのご親切に感謝します。 – Mal229

    関連する問題