【问题标题】:Date/time formatting for table creation用于表创建的日期/时间格式
【发布时间】:2015-03-06 18:40:25
【问题描述】:

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

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

CREATE TABLE 语句的格式是什么?

CREATE TABLE practice (
Data_Time ????
)

另一种选择可能是读取为varchar(),然后再格式化。看起来很复杂。

【问题讨论】:

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


    【解决方案1】:

    始终将时间戳存储为 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()。示例:

    【讨论】:

      【解决方案2】:

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

      create table practice (date_time timestamp, format text)
      

      【讨论】:

      • text 和 varchar 没有区别(没有约束!),何必呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      相关资源
      最近更新 更多