1

我正在创建一个将用COPY. 这是该数据的格式:

6/30/2014  2:33:00 PM
MM-DD-YYYY HH:MM:SS ??

我将使用什么作为CREATE TABLE语句的格式?

CREATE TABLE practice (
Data_Time ????
)

一种替代方法可能是varchar()稍后读取为 then 格式。似乎令人费解。

4

2 回答 2

2

始终将时间戳存储为timestamp(或timestamptz)
永远不要为此使用字符串类型 ( text, varchar, ...)。

CREATE TABLE practice (
  practice_id serial PRIMARY KEY
, data_time timestamp NOT NULL
);

如果您的时间戳文字是干净的并且遵循标准MDY格式,您可以将DateStyle事务临时设置为timestamp直接读取正确的类型:

BEGIN;
SET LOCAL datestyle = 'SQL, MDY';  -- works for your example
COPY practice (data_time) FROM '/path/to/file.csv';
COMMIT;

否则,您的想法还不错:COPY对于带有text列的临时表,INSERT可能使用to_timestamp(). 例子:

于 2015-03-07T09:10:19.567 回答
-3

你几乎不应该在 postgres 中使用 vharchar() 。始终使用文本。但在我看来你想要 2 列

create table practice (date_time timestamp, format text)
于 2015-03-06T18:48:18.770 回答