Thread: date ranges

date ranges

From
jo
Date:
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


Re: date ranges

From
Raymond O'Donnell
Date:
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
---------------------------------------------------------------

Re: date ranges

From
brian
Date:
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

Re: date ranges

From
Michael Glaesemann
Date:
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