我想创建一个新表并设置具有特定格式的日期类型。这可能吗?
例如:
CREATE TABLE User (
...
EXPIRATION DATE " YYYY/MM"
...
)
答案 0 :(得分:4)
我建议采用不同的方法:从不将日期/时间存储为character type(text
,varchar()
,...)。使用appropriate type,可能是date
。
此外,从不使用reserved words作为标识符。 user
是不可能开始的,你必须双引号,我不鼓励。
可能看起来像这样:
CREATE TABLE usr (
usr_id serial PRIMARY KEY
,usr text UNIQUE
,expiration_date date
...
);
现在,只要它们是明确的,各种输入格式都是可能的。 related question @DrColossos has linked to in his comment有更多内容 The manual has all the details.
要强制执行特定的输入格式,您可以通过to_date()
函数运行文本文字。例如:
INSERT INTO usr (usr, expiration_date)
VALUES ('flippin_user', to_date($my_date_literal, ' YYYY/MM');
注意:如果您在模式中包含前导空白,则可以从输入中获得它!
最后,您可以使用输出上的to_char()
以您喜欢的方式设置日期格式:
SELECT usr, to_char(expiration_date, ' YYYY/MM') AS formatted_exp_date
WHERE usr_id = 1;