问题: 我在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')
答案 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;