İki tarih arasındaki farkı Yıl, Ay, Gün olarak bulmak.

İki tarih arasında geçen zamanı bulmanız, yaş hesaplamanız gerekebilir. Oracle’da iki tarih arasındaki farkı yıl, ay,gun olarak  veren fonksiyon bulunmamaktadır.

Ben aşağıdaki şekilde bir sql ile hallettim: 

SQL>SELECT
  DOG_TAR DOGUM_TARIHI,
TRUNC( MONTHS_BETWEEN( SYSDATE, dog_tar)/12) yil,
TRUNC( MOD( MONTHS_BETWEEN( SYSDATE, dog_tar),12) ) ay,
TRUNC( (MONTHS_BETWEEN(SYSDATE,dog_tar)- TRUNC(MONTHS_BETWEEN( SYSDATE, dog_tar))) /0.032258064516129) gun
FROM
  PERSONEL; 


DOGUM_TARIHI        YIL         AY        GUN
------------ ---------- ---------- ----------
11.04.1970           39          9         24
01.01.1960           50          1          3
01.01.1998           12          1          3
04.08.1997           12          6          0
13.02.1982           27         11         22

0.032258064516129 iki gün arasındaki fark.

SQL>SELECT MONTHS_BETWEEN( SYSDATE,SYSDATE-1) FROM DUAL;

MONTHS_BETWEEN(SYSDATE,SYSDATE
------------------------------
             0,032258064516129

İki tarih arasındaki farkı yıl,ay,gün,hafta olarak hesaplayan fonksiyon.

CREATE OR REPLACE FUNCTION "TARIH_HESAPLA"(BAS_TARIH DATE, BIT_TARIH DATE,FORMAT
   VARCHAR2 DEFAULT '%YIL% yil %AY% ay %AYGUN% gun')
   RETURN VARCHAR2 DETERMINISTIC IS
   SONUC VARCHAR2(100) ;
   FARK NUMBER;
BEGIN
   -- %YIL% : Iki tarih arasindaki fark yil olarak
   -- %AY% : Iki tarih arasindaki fark ay olarak
   -- %AYGUN% : Iki tarih arasindaki fark aydan kalan gun olarak
   -- %HAFTA% : Iki tarih arasindaki fark hafta olarak
   -- %HAFTAGUN% :Iki tarih arasindaki fark haftadan kalan gun olarak
   SONUC := FORMAT;
   FARK:=months_between(BIT_TARIH, BAS_TARIH);
   SONUC := REPLACE(SONUC,'%YIL%',trunc(fark / 12));
   SONUC := REPLACE(SONUC,'%AY%',trunc(mod(fark, 12)) );
   SONUC := REPLACE(SONUC,'%AYGUN%',trunc( (fark - trunc(fark) ) / 0.032258064516129));
   SONUC := REPLACE(SONUC,'%HAFTAGUN%',TRUNC(mod(BIT_TARIH-BAS_TARIH,7 )));
   SONUC := REPLACE(SONUC,'%HAFTA%',TRUNC( (BIT_TARIH-BAS_TARIH)/7 ));
   RETURN SONUC;
END;

Örnek:

SQL> select tarih_hesapla(sysdate-999,sysdate) from dual;

TARIH_HESAPLA(SYSDATE-999,SYSD
------------------------------
2 yil 8 ay 25 gun


SQL> select tarih_hesapla(sysdate-999,sysdate,'%YIL% Yil') from dual;

TARIH_HESAPLA(SYSDATE-999,SYSD
------------------------------
2 Yil


SQL> select tarih_hesapla(sysdate-100,sysdate,'%HAFTA% Hafta %HAFTAGUN% Gün') from dual;

TARIH_HESAPLA(SYSDATE-100,SYSD
------------------------------
14 Hafta 2 Gün

Oracle Enterprise Linux üzerine Oracle 11g R2 kurmak

Anlatılan OEL (Oracle Enterprise Linux) versiyonu Release 5, Update 4 tur.

İndirmek için : http://edelivery.oracle.com/linux

Oracle Database’in kurulumu sırasında yapmanız gereken paket kontrolü ve kullanıcı tanımlaması işlemlerinin OEL tarafından yapılmasını sağlayabilirsiniz. Bunun için kurulum sırasında  oracle-validated paketinin yüklenmesi gereklidir.

Paketin yüklenmesi için aşağıdakileri takip edin :

Kurulumda yazılım özellikleri ekranına geldiğinizde  “Customize Now” seçeneğini seçip Next’e  tıklayın.

oelinstall1

Sol taraftaki ekrandan “Base System” i seçip sağ taraftaki listeden “System Tools” seçin. “System Tools” un önündeki checkbox’a seçin sonra listenin altındaki “Optional Packages” butonunu tıklayın.

oelinstall2

oelinstall3

Listeyi aşağıya doğru kaydırın “oracle-validated” paketini seçip “Close” butonunu tıklayın

oelinstall4

OEL kurulduğunda oracle ile ilgili paketlerde yüklenmiş olacaktır.

Oracle veritabanı’nın kurulması.

Oracle kullanıcısındayken http://www.oracle.com/technology/software/products/database/index.html sayfasından
32 bit için:
linux_11gR2_database_1of2.zip
linux_11gR2_database_2of2.zip

64 bit için:
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip

kurulum dosyalarını bilgisayarınıza (mesela: /home/oracle)indirin.

root kullanıcısında iken :

mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod 755 /u01/app/oracle

komutlarını verin.

oracle kullanıcısı olarak giriş yapın

Terminal pernceresi açıp dosyaları indirdiğiniz dizinde:

32 bit için: 

unzip -d db11gr2 linux_11gR2_database_1of2.zip
unzip -d db11gr2 linux_11gR2_database_2of2.zip
cd db11gr2/database
./runInstaller

64 bit için: 

unzip -d db11gr2 linux.x64_11gR2_database_1of2.zip
unzip -d db11gr2 linux.x64_11gR2_database_2of2.zip
cd db11gr2/database
./runInstaller

oracle kurulum perceresi açılmış olmalıdır.

İlgili linkler:
oracle-validate paketi
Installing Oracle 11gR2 on OEL 5.3
Oracle Enterprise Linux 5.1 Kurulumu
Oracle Enterprise Linux 5.1′e Oracle 10g Veritabanı Kurulumu
http://www.puschitz.com/InstallingOracle10g.shtml