首页 > 解决方案 > Postgres 时间戳不接受 2017-01-01T23:00:00-00:00

问题描述

在 Jupyter 中使用 Python3 和 psycopg2 将 csv 加载到 psql 中。前两列是我不太熟悉的 ISO 格式。是否有一个简单的数据类型可以接受:

2017-01-01T23:00:00-00:00 

我试过日期、时间戳、不带时区的时间戳、带时区的时间戳。我是否需要进行预处理才能将时间戳转换为更友好的格式?

我以为我可以做类似的事情 -

cur.execute("""
CREATE TABLE test(
id integer PRIMARY KEY,
intervalbegin_gmt timestamp,
intervalend_gmt timestamp, ...

出现错误 -

DataError: invalid input syntax for integer: "2017-01-01T23:00:00-00:00"

标签: pythonpython-3.xpostgresqldatetimepsycopg2

解决方案


该字符串是正确的时间戳输入文字:

select '2017-01-01T23:00:00-00:00'::timestamp

      timestamp      
---------------------
 2017-01-01 23:00:00
(1 row)

问题是您正试图将该列导入整数列id

前两列是 ISO 格式...

所以表格应该是这样的:

CREATE TABLE test(
    intervalbegin_gmt timestamp,
    intervalend_gmt timestamp, 
    ...

如果需要,您可以在复制数据后添加主键。


推荐阅读