postgresql中的日期样式问题

postgresql中的日期样式问题,sql,postgresql,datetime,Sql,Postgresql,Datetime,使用:postgresql 表名:my_数据 我的表格中有类型为timestamp的以下列current_time。此字段的输入如下所示: “2014年4月26日下午5:27:48” 我正在从csv文件读取此表,发现以下错误: ERROR: date/time field value out of range: "4/25/2014 5:29:37 PM" HINT: Perhaps you need a different "datestyle" setting. CONTEXT: CO

使用:postgresql
表名:my_数据

我的表格中有类型为
timestamp
的以下列current_time。此字段的输入如下所示:

“2014年4月26日下午5:27:48”

我正在从csv文件读取此表,发现以下错误:

ERROR:  date/time field value out of range: "4/25/2014 5:29:37 PM"
HINT:  Perhaps you need a different "datestyle" setting.
CONTEXT:  COPY my_data, line 2, column current_time: "4/25/2014 5:29:37 PM"
我寻找解决方案并尝试了此方法,但它无法帮助我:

set datestyle = "ISO, DMY";

请帮助我如何以适当的
时间戳
格式读取此文件。

您的示例使用
MDY
(月前一天)样式的日期。所以你需要像这样的东西

SET DateStyle TO MDY;
但一般来说,使用这种格式更安全。首先尝试传递该格式,如果不能,可以使用该函数在格式之间进行转换

SELECT to_timestamp('4/25/2014 5:29:37 PM', 'MM/DD/YYYY HH:MI:SS AM');

好的
“4/25/2014 5:29:37 PM
不是ISO时间戳格式。ISO格式是
yyyy-mm-dd-hh24:mi:ss
有没有办法在postgresql中读取此格式?或者至少读取此格式并在以后转换为正确格式?看起来像可怕的MDY(+time)格式对我来说…我是
SQL
新手,所以如果我必须先将此列读为
varchar
,然后使用
将其转换为\u timestamp()
或直接将其读为
timestamp
。这些数据来自哪里?第一种方法应该是为postgres提供首选格式(ISO),如果不可能,请将该表达式(to_timestamp调用)提供给您的insert/update语句。数据正在从
CSV
文件读取到表中。那么,如果postgres无法检测到首选格式,该方法会是什么呢?如果您使用一些脚本(解析CSV)我会寻找一种方法将日期转换为该脚本语言中的首选格式,或者在从csv插入一行时使用to_timestamp函数。如果您在postgres中使用
COPY
命令,最好的方法可能是将datestyle配置临时设置为
MDY