Re: [SQL] Date

From: Chairudin Sentosa Harjo <tsg(at)dnet(dot)net(dot)id>
To: Aleksey Dashevsky <postgres(at)luckynet(dot)co(dot)il>
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] Date
Date: 1998-07-10 05:31:29
Message-ID: 35A5A731.50FABE98@dnet.net.id
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Thank you for all your helps.

The 'datetime' is indeed a better choice.
The 'now' is the answer for my question.

Now, I have one question, that I think it is wierd.

create table blah
(
custnum int,
startdate datetime default datetime(now()),
enddate datetime
);

FIRST:
insert into blah
(custnum, enddate)
values
(1,'01-JAN-00');

SECOND:
insert into blah
(custnum, enddate)
values
(1,'01-01-00');

THIRD:
insert into blah
(custnum, enddate)
values
(1,'01-01-2000');

FOUR:
insert into blah
(custnum, enddate)
values
(custnum, '01012000');

The first, second and third does the right thing, which is tyring to insert
01 JANUARY 2000, the result in postgres is :
Sat Jan 01 00:00:00 2000

However, the fourth is wrong, the result in postgres is :
Wed Aug 02 00:00:00 0102

Could someone tell me why?

Regards
Chai

Aleksey Dashevsky wrote:

> On Wed, 8 Jul 1998, Chairudin Sentosa Harjo wrote:
>
> > Hello,
> >
> > I need help with date.
> >
> > create table blah
> > (
> > custnum int,
> > startdate date,
> > enddate date
> > );
> >
> > How do I get the "real date" to insert to startdate when
> > the data is entered?
> >
> > insert into blah
> > (custnum, startdate, enddate)
> > values
> > (001,???,'NULL');
> >
> > I need a way to fill in the '???' field.
> > In oracle I could use
> > select sysdate from dual;
>
> There are some different ways:
> 1. You can try to use current_date and current_time system varibales.
> 2. You can use constant 'now' casted to appropriate data type, e.g. :
> template1=> select 'now'::date;
> ?column?
> ----------
> 08-07-1998
> (1 row)
>
> template1=> select 'now'::datetime;
> ?column?
> ----------------------------
> Wed 08 Jul 12:39:22 1998 IDT
> (1 row)
>
> template1=> select 'now'::time;
> ?column?
> --------
> 12:39:25
> (1 row)
>
> 3. There is also now() function:
>
> template1=> select now();
> now
> ----------------------
> 1998-07-08 12:39:47+03
> (1 row)
>
> It is almost the same as constant 'now', but if you want to create table
> which will have auto-timestamp-field, you need following syntax:
>
> proba=> create table proba (i int, tt datetime default datetime(now()));
> CREATE
>
> proba=> insert into proba values (1);
> INSERT 2170370 1
> proba=> insert into proba values (2);
> INSERT 2170371 1
> proba=> insert into proba values (7);
> INSERT 2170372 1
> proba=> insert into proba values (989);
> INSERT 2170373 1
> proba=> select * from proba;
> i|tt
> ---+----------------------------
> 1|Wed 08 Jul 12:54:53 1998 IDT
> 2|Wed 08 Jul 12:54:56 1998 IDT
> 7|Wed 08 Jul 12:54:58 1998 IDT
> 989|Wed 08 Jul 12:55:02 1998 IDT
> (4 rows)

Browse pgsql-sql by date

  From Date Subject
Next Message Johann Spies 1998-07-10 07:30:56 The date of an entry?
Previous Message Lorenzo Huerta 1998-07-09 20:27:23 unique indices...