sql - 如何创建日期
问题描述
如何使用 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)
解决方案
这是 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 NULL
PRIMARY KEY
对于一列来说是多余的。- 为列使用合理的名称。如果您想要一列代表一个月,那么
yyyymm
比date
. - Postgres 以相同的方式存储
varchar()
和存储char()
,但对于大多数数据库来说,varchar()
它是首选,因为尾随空格实际上占用了数据页上的字节。
推荐阅读
- jquery - TypeError: jQuery 是未定义的 WordPress
- html - 为我的引导导航栏上的活动链接添加背景颜色
- c# - 如何在 C# 中为 Google 语音识别 api 准备音频文件(wav 或 mp3)?
- java - java.lang.ClassNotFoundException:org.jooq.util.JavaGenerator
- angular - Angular 不会导入显示错误的 Rxjs
- android - 与依赖项“com.android.support:support-v4”冲突
- future - 如何使用 suspendCoroutine 将 java 7 future 变成 kotlin 挂起功能
- xml - 如何使用 xslt 将 XML 元素内容复制到另一个 xml 文件?
- regex - 正则表达式重复单词
- node.js - adm-zip 不压缩数据