|  |  | 
| EnderUNIX İpucuArkadaşıma gönder , Ana Sayfa[ PostgreSQL ] "Oracle daki Next_day fonksiyonu uyarlamasi" - Bülent KAPTAN - (2008-02-02 05:56:40) [2582] Next_day fonksiyonunu örnekle açýklamak daha uygun: 02 subat 2008(2008-02-02) den sonraki ilk sali günü 5 Subat 2008 (2008-02-05) oldugunu hesaplayan fonksiyondur. Ýki ayri fonsiyon gösterceðim. Ýlki verilen gune gore ikinici ise gunun integer degerine göre ONEMLI NOT: Ipucu eklenirken tirnaklar slash tirnak olarak gorulecektir. Duzeltmeniz gerekli /**********1. Fonksiyon *******************/ CREATE OR REPLACE FUNCTION next_day1(IN _d date, IN _day varchar) RETURNS date AS $$ DECLARE _id integer; _dow integer; BEGIN _dow := EXTRACT(dow FROM _d); _id := CASE lower(_day) WHEN 'sunday' THEN 0 WHEN 'monday' THEN 1 WHEN 'tuesday' THEN 2 WHEN 'wednesday' THEN 3 WHEN 'thursday' THEN 4 WHEN 'friday' THEN 5 WHEN 'saturday' THEN 6 ELSE CAST(ERROR(E'Wrong identifier for day \''||_day||E'\'') AS integer) END; RETURN CASE _id <= _dow WHEN true THEN _d + (_id - _dow + 7) WHEN false THEN _d + (_id - _dow) END; END; $$ LANGUAGE plpgsql IMMUTABLE STRICT; /**********2. Fonksiyon *******************/ CREATE OR REPLACE FUNCTION next_day2(IN _d date, IN _day integer) RETURNS date AS $$ DECLARE _id integer; _dow integer; BEGIN _dow := EXTRACT(dow FROM _d); RETURN CASE _day <= _dow WHEN true THEN _d + (_day - _dow + 7) WHEN false THEN _d + (_day - _dow) END; END; $$ LANGUAGE plpgsql IMMUTABLE STRICT; /**********Ornek Kullanýmý*******************/ Ornek sql 1 : select next_day1(cast('2008-02-02' as date),'tuesday'); cevap : 2008-02-05 Ornek sql 2 : select next_day2(now,2); cevap : 2008-02-05 Not: Alintidir Arkadaşıma gönder , Ana Sayfa |  |