Re: [GENERAL] Date & Time - Mailing list pgsql-general

From Ed Loehr
Subject Re: [GENERAL] Date & Time
Date
Msg-id 3846C590.29422D0A@austin.rr.com
Whole thread Raw
In response to Re: [GENERAL] Date & Time  (<kaiq@realtyideas.com>)
Responses Re: [GENERAL] Date & Time
List pgsql-general
kaiq@realtyideas.com wrote:

> Here is the test. I did not put it in mail because pine did not like
> cut/paste. now I find a way to do it. It looks good!
> the conclusion: current_timestamp is "current" -- it should be,
>    the looks closer than now/now()  :-)

I don't think that's quite true, at least on v6.5.2.

Single quotes make a big difference, both on the declaration
in CREATE and on the input params to INSERT.  Here's
an example...


CREATE TABLE mytable (
   id   SERIAL,
   note VARCHAR,
   dt1  DATETIME DEFAULT CURRENT_TIMESTAMP,
   dt2  DATETIME DEFAULT 'CURRENT_TIMESTAMP'
);

INSERT INTO mytable (note) VALUES
   ('True default datetime values');
INSERT INTO mytable (note,dt1) VALUES
   ('dt1 input as ''current_timestamp''','current_timestamp');
INSERT INTO mytable (note,dt1) VALUES
   ('dt1 input as current_timestamp',current_timestamp);
INSERT INTO mytable (note,dt2) VALUES
   ('dt2 input as ''current_timestamp''','current_timestamp');
INSERT INTO mytable (note,dt2) VALUES
   ('dt2 input as current_timestamp',current_timestamp);

SELECT * FROM mytable;

The results:

test=> SELECT * FROM mytable;
id|note                            |dt1                         |dt2
--+--------------------------------+----------------------------+----------------------------
 1|True default datetime values    |Thu Dec 02 13:07:41 1999 CST|current
 2|dt1 input as 'current_timestamp'|current                     |current
 3|dt1 input as current_timestamp  |Thu Dec 02 13:07:41 1999 CST|current
 4|dt2 input as 'current_timestamp'|Thu Dec 02 13:07:41 1999 CST|current
 5|dt2 input as current_timestamp  |Thu Dec 02 13:07:41 1999 CST|Thu Dec 02 13:07:41 1999 CST
(5 rows)

And with 'current' and 'now' as column types...

DROP SEQUENCE mytable_id_seq;
DROP TABLE mytable;
CREATE TABLE mytable (
   id   SERIAL,
   note VARCHAR,
   dt3  DATETIME DEFAULT 'current',
   dt4  DATETIME DEFAULT 'now'
);

INSERT INTO mytable (note) VALUES
   ('True default datetime values');
INSERT INTO mytable (note,dt3) VALUES
   ('dt3 input as ''current_timestamp''','current_timestamp');
INSERT INTO mytable (note,dt3) VALUES
   ('dt3 input as current_timestamp',current_timestamp);
INSERT INTO mytable (note,dt4) VALUES
   ('dt4 input as ''current_timestamp''','current_timestamp');
INSERT INTO mytable (note,dt4) VALUES
   ('dt4 input as current_timestamp',current_timestamp);

SELECT * FROM mytable;

Results:

test=> SELECT * FROM mytable;
id|note                            |dt3                         |dt4
--+--------------------------------+----------------------------+----------------------------
 1|True default datetime values    |current                     |Thu Dec 02 13:10:24 1999 CST
 2|dt3 input as 'current_timestamp'|current                     |Thu Dec 02 13:10:24 1999 CST
 3|dt3 input as current_timestamp  |Thu Dec 02 13:10:25 1999 CST|Thu Dec 02 13:10:24 1999 CST
 4|dt4 input as 'current_timestamp'|current                     |current
 5|dt4 input as current_timestamp  |current                     |Thu Dec 02 13:10:25 1999 CST
(5 rows)

Cheers.
Ed Loehr

>
>
> ###############################################################
> test3=> drop table account;
>
> DROP
> test3=> CREATE TABLE account (
>
>                 test3->                  act char(1) default 'Y',
>
>                 test3->                  createdfunc DATETIME DEFAULT now(),
>
>                 test3->                  createdcons DATETIME DEFAULT 'now',
>
>                 test3->                  created2cons DATETIME DEFAULT 'current_timestamp',
>
>                 test3->                  createdcurr DATETIME DEFAULT 'current'
>
>                 test3->                  );
>
> CREATE
> test3=>
>
> test3=>
>
> test3=> insert into account values('y');
>
> INSERT 283346 1
> test3=> insert into account values('1');
> INSERT 283347 1
> test3=> insert into account (createdcons) values(now());
>
> INSERT 283348 1
> test3=> insert into account (createdcons) values(now);
>
> ERROR:  Attribute now not found
> test3=> insert into account (createdcons) values('now');
>
> INSERT 283349 1
> test3=> insert into account (createdcons) values(current);
>
> ERROR:  Attribute current not found
> test3=> insert into account (createdcons) values('current');
>
> INSERT 283350 1
> test3=> insert into account (createdcons) values(current_timestamp);
>
> INSERT 283351 1
> test3=> insert into account (createdcons) values('current_timestamp');
>
> INSERT 283352 1
> test3=>
> test3=> insert into account (createdcons) values(current_timestamp());
>
> ERROR:  parser: parse error at or near ")"
> test3=> insert into account (createdcons) values(current_timestamp(now));
>
> ERROR:  parser: parse error at or near "now"
> test3=> insert into account (createdcons) values(current_timestamp('now'));
>
> ERROR:  parser: parse error at or near "'"
> test3=> insert into account (createdcons) values(now(current_timestamp));
>
> ERROR:  No such function 'now' with the specified attributes
> test3=>
>
> test3=> select * from account;
>
> act|createdfunc                 |createdcons                 |created2cons|createdcurr
> ---+----------------------------+----------------------------+------------+-----------
> y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:33 1999 CST|current     |current
> 1  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:33 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|current                     |current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|current                     |current     |current
> (7 rows)
>
> test3=> select * from account where createdcons = 'now';
>
> act|createdfunc                 |createdcons                 |created2cons|createdcurr
> ---+----------------------------+----------------------------+------------+-----------
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|current                     |current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|current                     |current     |current
> (5 rows)
>
> test3=> select * from account where createdcons = now();
>
> act|createdfunc                 |createdcons                 |created2cons|createdcurr
> ---+----------------------------+----------------------------+------------+-----------
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|current                     |current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|current                     |current     |current
> (5 rows)
>
> test3=> select * from account where createdcons = 'current';
> act|createdfunc                 |createdcons                 |created2cons|createdcurr
> ---+----------------------------+----------------------------+------------+-----------
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|current                     |current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|Thu Dec 02 08:41:34 1999 CST|current     |current
> Y  |Thu Dec 02 08:41:34 1999 CST|current                     |current     |current
> (5 rows)
>
>         test3=> select * from account where createdcons = 'current_timestamp';
>
>         act|createdfunc                 |createdcons|created2cons|createdcurr
>         ---+----------------------------+-----------+------------+-----------
>         Y  |Thu Dec 02 08:41:34 1999 CST|current    |current     |current
>         Y  |Thu Dec 02 08:41:34 1999 CST|current    |current     |current
>         (2 rows)
>
>         test3=> select * from account where createdcons = current_timestamp();
>
> ERROR:  parser: parse error at or near ")"
> test3=> select * from account where createdcons = current_timestamp('now');
>
> ERROR:  parser: parse error at or near "'"
> test3=> select * from account where createdcons = 'current_timestamp('now')';
>
> ERROR:  parser: parse error at or near "now"
>
>
> ##############################################################
> On Wed, 1 Dec 1999, Bruce Momjian wrote:
>
> > > Ed Loehr ha scritto:
> > >
> > > > Just curious:  anyone have any comment on any practical differences between now() and CURRENT_TIMESTAMP, which
seemsto work 
> > > > the same?
> > > >
> > >
> > > I think it is the same function, both of them return the current date and time.
> > >
> > > now() should be the internal postgreSQL function.
> > > and CURRENT_TIMESTAMP is the exact SQL-92 syntax
> >
> > I am changing my book to use CURRENT_TIMESTAMP rather than now().
> >
> > --
> >   Bruce Momjian                        |  http://www.op.net/~candle
> >   maillist@candle.pha.pa.us            |  (610) 853-3000
> >   +  If your life is a hard drive,     |  830 Blythe Avenue
> >   +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
> >
> > ************
> >
>
> ************


pgsql-general by date:

Previous
From:
Date:
Subject: Re: [GENERAL] Date & Time
Next
From: Mike Mascari
Date:
Subject: Re: [GENERAL] Except operation