首页 > 解决方案 > 如何创建日期

问题描述

如何使用 postgresql11 创建日期格式 yyyy-mm

CREATE TABLE public."ASSOL"
(
    id integer NOT NULL,
    "ind" character(50) ,
    "s_R" character(50) ,
    "R" character(50) ,
    "th" character(50),
    "C_O" character(50) ,
    "ASSOL" numeric(11,3),
    date date,
    CONSTRAINT "ASSOL_pkey" PRIMARY KEY (id)

标签: sqlpostgresql

解决方案


这是 Kaushik 答案的变体。

您应该只使用date数据类型。无需为此创建另一种类型。但是,我会使用一个check约束来实现这个:

CREATE TABLE public.ASSOL (
    id serial primary key,
    ind varchar(50) ,
    s_R varchar(50) ,
    R varchar(50) ,
    th varchar(50),
    C_O varchar(50) ,
    ASSOL numeric(11,3),
    yyyymm date,
    constraint chk_assol_date check (date = date_trunc('month', date))
);

这仅允许您插入当月第一天的值。其他插入将失败。

补充说明:

  • 创建表时不要使用双引号。然后,您必须使用双引号引用列/表,这只会使查询变得混乱。您的标识符应该不区分大小写。
  • 整数主键通常是一serial列。
  • NOT NULLPRIMARY KEY对于一列来说是多余的。
  • 为列使用合理的名称。如果您想要一列代表一个月,那么yyyymmdate.
  • Postgres 以相同的方式存储varchar()和存储char(),但对于大多数数据库来说,varchar()它是首选,因为尾随空格实际上占用了数据页上的字节。

推荐阅读