Re: [GENERAL] Date & Time

From: Ed Loehr <ELOEHR(at)austin(dot)rr(dot)com>
To: kaiq(at)realtyideas(dot)com
Cc: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>, pgsql-general(at)postgresql(dot)org
Subject: Re: [GENERAL] Date & Time
Date: 1999-12-02 19:16:32
Message-ID: 3846C590.29422D0A@austin.rr.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

kaiq(at)realtyideas(dot)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 seems to 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(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
> > + If your life is a hard drive, | 830 Blythe Avenue
> > + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
> >
> > ************
> >
>
> ************

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message kaiq 1999-12-02 19:17:38 Re: [GENERAL] book's pdf link/archive/documentation
Previous Message Ed Loehr 1999-12-02 18:27:27 Re: [GENERAL] "FATAL 1: my bits moved right off the end of theworld!"