Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Daylight Saving Code
I've done this before and you are better off using a package. (I am not sure
your code works, there were some dates during the late 70's where the
daylight savings was something like January and Feb.) Also in a package you
can declare some constants and thus if you are using it in an update
statement it will be much more efficient.
(the constants are private to the package body and thus initialized once per
session when the package is first used - otherwise you are calling to_date
to_char a zillion times per row in an update statement. (very inefficient)
Jim
-- Replace part of the email address: kennedy-down_with_spammers_at_attbi.com with family. Remove the negative part, keep the minus sign. You can figure it out. "Aruneesh Salhotra" <asalhotra_at_customink.com> wrote in message news:a29eb1e7.0306110843.5c979d6e_at_posting.google.com...Received on Thu Jun 12 2003 - 00:33:00 CDT
> I created a oracle query which detects the start and end date for
> dayight saving. I eventually used this, and passed the current year so
> to detect start/end dates for daylight saving for each year.
>
> I wanted to share the same with everyone.
>
> select SYSDATE x, 0 r1 from dual where SYSDATE between (select
> decode(to_char(to_date('04/01/2003','MM/DD/YYYY'),'D'),1,
> to_date('04/01/2003','MM/DD/YYYY')+7, 2,
> to_date('04/01/2003','MM/DD/YYYY')+6, 3,
> to_date('04/01/2003','MM/DD/YYYY')+5, 4,
> to_date('04/01/2003','MM/DD/YYYY')+4, 5,
> to_date('04/01/2003','MM/DD/YYYY')+3, 6,
> to_date('04/01/2003','MM/DD/YYYY')+2,
> to_date('04/01/2003','MM/DD/YYYY')) sday1 from dual) and (select
> decode(to_char(to_date('09/01/2003','MM/DD/YYYY'),'D'),1,
> to_date('09/01/2003','MM/DD/YYYY')+7, 2,
> to_date('09/01/2003','MM/DD/YYYY')+6, 3,
> to_date('09/01/2003','MM/DD/YYYY')+5, 4,
> to_date('09/01/2003','MM/DD/YYYY')+4, 5,
> to_date('09/01/2003','MM/DD/YYYY')+3, 6,
> to_date('09/01/2003','MM/DD/YYYY')+2,
> to_date('09/01/2003','MM/DD/YYYY')) sday2 from dual);
![]() |
![]() |