首页 > 解决方案 > postgresql 中的默认日期不为空

问题描述

我想创建一个新表,下面的代码;

create table dwh.dim_produk (
sk_produk serial primary key,
kode_produk varchar(25),
nama_produk varchar(50),
kode_kategori varchar(50),
nama_kategori varchar(50),
date_from date not null default current_timestamp,
date_to date not null default '12/31/9999');

但我得到的结果是;

SQL Error [22008]: ERROR: date/time field value out of range: "12/31/9999"
Hint: Perhaps you need a different "datestyle" setting.
Position: 253

预先感谢

标签: sqlpostgresql

解决方案


如果您想要一个“未来”的日期,请使用infinity

date_from date not null default current_date,
date_to date not null default 'infinity'

或者,如果您真的想要 9999 年的日期,请使用使用 ANSI 样式格式化的正确 DATE 文字:

date_from date not null default current_date,
date_to date not null default DATE '9999-12-31'

daterange或者,您可以使用数据类型表示范围:

valid_during daterange not null default daterange(current_date,null)

null上限的 A也意味着“无穷大”。


推荐阅读