date ranges
Hello,
I would like to know if there's a simple way to customize the range for
dates,
to avoid people insert dates before 1900 and after 2020, for example.
Thank you for your time,
jo
On 31/07/2007 17:26, jo wrote:
I would like to know if there's a simple way to customize the range for
dates,
to avoid people insert dates before 1900 and after 2020, for example.
How about a check constraint on the date column? Something like -
create table the_table (
the_date date,
....etc...
check (the_date >= '1900-01-01' and the_date <= '2020-12-31')
);
Then you just need to handle in your application the error raised when
someone enters an incorrect date.
HTH,
Ray.
---------------------------------------------------------------
Raymond O'Donnell, Director of Music, Galway Cathedral, Ireland
rod@iol.ie
---------------------------------------------------------------
jo wrote:
Hello,
I would like to know if there's a simple way to customize the range for
dates,
to avoid people insert dates before 1900 and after 2020, for example.
test=# CREATE TABLE foo (
id SERIAL PRIMARY KEY,
dt DATE,
CHECK (
EXTRACT('year' FROM dt) >= 1900 AND EXTRACT('year' FROM dt) < 2020
)
);
test=# INSERT INTO foo (dt) VALUES ('1984-03-02');
INSERT 0 1
test=# INSERT INTO foo (dt) VALUES ('1884-03-02');
ERROR: new row for relation "foo" violates check constraint "foo_dt_check"
test=# INSERT INTO foo (dt) VALUES ('2024-03-02');
ERROR: new row for relation "foo" violates check constraint "foo_dt_check"
There's probably a more elegant way to do this.
brian
On Jul 31, 2007, at 11:26 , jo wrote:
I would like to know if there's a simple way to customize the range
for dates,
to avoid people insert dates before 1900 and after 2020, for example.
You can use a check constraint on the date column, e.g.,
CREATE TABLE dates
(
a_date date PRIMARY KEY
CHECK(a_date BETWEEN '1900-01-01'::date AND '2020-12-31')
);
Michael Glaesemann
grzm seespotcode net