En çok karşılaştığım sorunlardan biri 31 Ekim gecesi geri alınan, sonra mart ayında tekrar artırılmasıydı. Tarih ile ilgili işlem yaparken GMT saatiyle çakışması istenmeyen durum. Türkiye olarak EET kullanıyoruz (GMT+2 denk geliyor ancak ileri saat veya geri saat uygulaması ile GMT+3 olabiliyor). EET olarak tanımlama yapılınca yaz saati ile kış saati sistematik olarak GMT+0 a güncellenebiliyor. Bunun için Oracle da fonksiyon yazdım. Böylece EET yi GMT olarak değiştirebiliyoruz. 31 Ekim öncesine +3, diğerlerine +2 uygulaması yapıyor otomatik olarak.
Şöyleki;
Tarihimiz number(14) olarak şu şekilde olsun;
ORJ Tarih: 01/02/2012 13:53:00
Number olarak: 20120201135300 (yyyymmddhh24miss formatında)
Tarihlerin hepsini bu format olarak kabul edip şu fonksiyonu işleme alalım;
Create or replace function eet_to_gmt(v_geltar in number) return number
iS
v_tar number(14);
Begin
Select to_char(from_tz(cast(to_date(v_geltar,'yyyymmddhh24miss') as timestamp), 'EET') at time zone 'GMT', 'yyyymmddhh24miss') into v_tar from dual;
return(v_tar);
end eet_to_gmt;
/
Bu kadar. GMT ile EET yer değiştirirseniz tersini yapar. Kullanımına gelirsek;
select eet_to_gmt(20120201135300) "Bilgi" from dual;
Bilgi
---------------------------------
20120201115300
Afiyet olsun (:


