表创建的日期/时间格式

时间:2015-03-06 18:40:25

标签: postgresql date datetime database-design postgresql-copy

我正在创建一个将填充COPY的表格。以下是该数据的格式:

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

我将使用什么作为CREATE TABLE声明的格式?

CREATE TABLE practice (
Data_Time ????
)

另一种选择可能是阅读varchar(),然后再格式化。似乎很复杂。

2 个答案:

答案 0 :(得分:2)

始终将时间戳存储为timestamp (or timestamptz) 切勿使用字符串类型(textvarchar,...)。

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)