我正在创建一个将填充COPY
的表格。以下是该数据的格式:
6/30/2014 2:33:00 PM
MM-DD-YYYY HH:MM:SS ??
我将使用什么作为CREATE TABLE
声明的格式?
CREATE TABLE practice (
Data_Time ????
)
另一种选择可能是阅读varchar()
,然后再格式化。似乎很复杂。
答案 0 :(得分:2)
始终将时间戳存储为timestamp
(or 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;
Else ,您的想法并不是那么糟糕:COPY
到具有text
列的临时表,清理数据和INSERT
时间戳可能使用to_timestamp()
。例如:
答案 1 :(得分:-3)
你几乎不应该在postgres中使用varchar()。始终使用文字。但听起来我觉得你想要2列
create table practice (date_time timestamp, format text)