Thread: A minute in timestamp
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
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
* 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