Str*_*rae 38 postgresql datetime default-value
作为标题,我如何设置一个表的列,使其具有当前年份和月份的默认值,格式为"YYYYMM",如今的200905?
Nic*_*son 79
请记住,日期的格式与存储无关.如果日期以该格式存储对您至关重要,则需要定义自定义数据类型或将其存储为字符串.然后,您可以使用提取,类型转换和连接的组合来获取该格式.
但是,我怀疑你想存储日期并获得输出格式.所以,像这样的东西将为你做到这一点:
CREATE TABLE my_table
(
id serial PRIMARY KEY not null,
my_date date not null default CURRENT_DATE
);
(CURRENT_DATE is basically a synonym for now() and a cast to date).
Run Code Online (Sandbox Code Playgroud)
(编辑使用to_char).
然后你可以得到你的输出:
SELECT id, to_char(my_date, 'yyyymm') FROM my_table;
Run Code Online (Sandbox Code Playgroud)
现在,如果你确实真的需要那场存储为一个字符串,并确保你总是可以做的格式为:
CREATE TABLE my_other_table
(
id serial PRIMARY KEY not null,
my_date varchar(6) default to_char(CURRENT_DATE, 'yyyymm')
);
Run Code Online (Sandbox Code Playgroud)
Cur*_*son 15
为了防止Milen A. Radev无法发布他的解决方案,这就是:
CREATE TABLE foo (
key int PRIMARY KEY,
foo text NOT NULL DEFAULT TO_CHAR(CURRENT_TIMESTAMP,'YYYYMM')
);
Run Code Online (Sandbox Code Playgroud)
你为什么想做这个?
恕我直言,您应该将日期存储为默认类型,如果需要,请将其转换为所需格式.
您可以通过指定列的格式但使用视图来逃避.我不知道其他方法.
编辑:
说真的,在我的意见中,您应该在具有日期类型的表上创建一个视图.我在谈论这样的事情:
create table sample_table ( id serial primary key, timestamp date);
Run Code Online (Sandbox Code Playgroud)
然后
create view v_example_table as select id, to_char(date, 'yyyymmmm');
Run Code Online (Sandbox Code Playgroud)
并在您的应用程序中使用v_example_table.
| 归档时间: |
|
| 查看次数: |
109067 次 |
| 最近记录: |