Python日期字符串到postgres可用日期

时间:2017-09-14 02:01:11

标签: python postgresql

问题: 我在Postgres表中将一些日期存储为文本,我希望将其转换为实际日期,再次在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 个答案:

答案 0 :(得分: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
  • 使用上述查询中的逻辑
  • 更新该列
  • 然后删除包含文本的旧列


更新可能如下所示:

update your_table
set ts_col_new = to_timestamp(ts_col, 'Month DD, YYYY HH:MI:SS PM')::timestamp with time zone;