Thread: A minute in timestamp

A minute in timestamp

From
"David Loh"
Date:
Hi all.
After some read of postgres' documentations, I can't found any command perform similar task like timediff() in other SQL server, the only thing I got is date_part().
For my case, what I actually need is to create a trigger (before insert) that check previous record (1 mins), grab the previous value and deduct new value (NEW.myValue := Previous.myValue - NEW.myOtherValue), and since the records are insert every minutes,the function should trace back to the record entered a minute ago (for e.g, 12:38 will check for record of 12:37 and grab the value), hence timestamp even include the milli-second, is there any command/trick to check if the record are entered approximately 55-65 secs (1 minutes +/- 5 secs) ?
So far, I'd tried 'select * from myTable where date_part('minute',Update_Time - now()) = 1;', but this SQL statement will only return result if the hour:minute:milli-seconds MATCH EXACTLY !! (12:38.51451->12:39.51451 = match, the rest aren't). Then I switch to 'select * from myTable where Update_Time = now()-interval '1 minute'', but it still the same :(
If any of you guys have a solution to solve my problems, please kindly let me know, your help is greatly apprepriate.
Thanks in advance.
 
Regards,
David Loh
 
 

Re: A minute in timestamp

From
Richard Huxton
Date:
On Thursday 08 May 2003 7:40 am, David Loh wrote:
> Hi all.
> After some read of postgres' documentations, I can't found any command
> perform similar task like timediff() in other SQL server, the only thing I
> got is date_part(). For my case, what I actually need is to create a
> trigger (before insert) that check previous record (1 mins), grab the
> previous value and deduct new value (NEW.myValue := Previous.myValue -
> NEW.myOtherValue), and since the records are insert every minutes,the
> function should trace back to the record entered a minute ago (for e.g,
> 12:38 will check for record of 12:37 and grab the value), hence timestamp
> even include the milli-second, is there any command/trick to check if the
> record are entered approximately 55-65 secs (1 minutes +/- 5 secs) ?

Do exactly as you've just described:

SELECT ....
WHERE t BETWEEN now()-'1 min 5 secs'::interval AND now()-'55 secs'::interval

It takes a while to get used to PG's date/time/interval types vs timediff()
functions you get in most systems. I find them clearer now I've got used to
them.

--  Richard Huxton



Re: A minute in timestamp

From
"Victor Yegorov"
Date:
* David Loh <david@bizsurf.com> [08.05.2003 10:03]:
> Hi all.
> 'select * from myTable where date_part('minute',Update_Time > - now()) = 1;'

Does it helps, if you'll try this:

select * from myTable where date_part('second', now() - Update_Time) between 55 and 65;

--

Victor Yegorov
IT Programmer, NORD/LB Latvija JSC
Fax (+371) 7323449, Phone (+371) 7077142, Mobile (+371) 9131883