Home > Oracle, SQL > Tipe data dan tipe “DATE” Si Ribet

Tipe data dan tipe “DATE” Si Ribet

Terus terang saja memang diantara keseluruhan tipe data yang paling ribet adalah “DATE” pada setiap bahasa pemrograman. Saya sudah membuktikan beberapa diantaranya, yaitu PHP, Javascript, ASP, MySQL, dan Oracle sendiri. Semua bahasa tersebut mempunyai cara masing-masing dalam mengelola tipe data yang cukup unik ini.

Yang paling sulit adalah jika ingin mengolah tipe data ini antar bahasa pemrograman yang berbeda, misal JavaScript dan PHP, atau Oracle dan JavaScript. Ribet bener. Kita harus benar-benar menguasai karakteristik tipe data ini di tiap bahasa pemrograman tersebut (so pasti dong).

Sebelum kita membahas “Si Ribet” DATE, sebaiknya kita mulai dengan melihat tipe-tipe data yang lain. Secara global tipe-tipe data yang sering digunakan pada Oracle adalah sebagai berikut :

CHAR(i) : Tipe data untuk string (berupa karakter). Nilai i adalah panjang dari string tersebut. Jika tidak disertai Niali i maka sama saja dengan CHAR(1).
VARCHAR2(i) : Tipe data untuk string (berupa karakter, walaupun berisi angka tapi akan dikenal dengan karakter, mis : ‘123’). Nilai i adalah panjang dari string tersebut. Perbedaan dengan tipe data CHAR adalah tipe data ini fleksibel tergantung dari panjang string yang dimasukkan dengan maksimal nilai i tersebut. contoh CHAR(10) dan VARCHAR2(10). Jika dimasukkan nilai ‘ORACLE’, maka pada kolom CHAR(10) akan disimpan di memori tetap (fix) 10 karakter, tapi jika pada VARCHAR2(10) maka yang disimpan adalah panjang dari string ‘ORACLE’ yaitu 6 karakter.
NUMBER(i,j) : Tipe data untuk integer, float (berupa angka, mis : 2000)
i adalah total digit keseluruhan antara 1 – 38 digit
j adalah digit dibelakang koma, berarti jumlah digit di depan koma = (i – j)
DATE : Tipe data untuk tanggal

Perhatikan contoh berikut (tabel dilihat di sini dan data dapat diperoleh di sini):

1. Tampilkan jadwal pelajaran kelas I pada hari SENIN.

SELECT
mp.NAMA_MP AS MATA_PELAJARAN,
g.NAMA AS NAMA_GURU,
b.KELAS_ID AS KELAS,
b.HARI
FROM
TEST.BELAJAR b,
TEST.GURU g,
TEST.MATA_PELAJARAN mp,
WHERE
b.NIG = g.NIG
AND b.KODE_MP = mp.KODE_MP
AND b.KELAS_ID = ‘I’
AND b.HARI = ‘SENIN’
ORDER BY mp.NAMA_MP;

2. Tampilkan seluruh murid kelas I yang lahir pada bulan Januari 1978.

SELECT
NIS,
NAMA
FROM
TEST.MURID
WHERE
TO_CHAR(TGL_LAHIR, ‘MM-YYYY’) = ’01-1978′
ORDER BY NAMA;  

/*Atau bisa seperti ini : */

SELECT
NIS,
NAMA
FROM
TEST.MURID
WHERE
TO_CHAR(TGL_LAHIR, ‘MMYYYY’) = ‘011978’
ORDER BY NAMA;

/*Atau bisa seperti ini : */

SELECT
NIS,
NAMA
FROM
TEST.MURID
WHERE
TO_CHAR(TGL_LAHIR, ‘MON-YYYY’) = ‘JAN-1978’
ORDER BY NAMA;

3. Tampilkan murid yang lahir pada tanggal 1 Januari 1978

SELECT
NIS,
NAMA
FROM
TEST.MURID
WHERE
TGL_LAHIR = TO_DATE(’01-01-1978′, ‘DD-MM-YYYY’)
ORDER BY NAMA;  

/*Atau bisa seperti ini : */

SELECT
NIS,
NAMA
FROM
TEST.MURID
WHERE
TGL_LAHIR = TO_DATE(’01-JAN-1978′, ‘DD-MON-YYYY’)
ORDER BY NAMA;

/*Atau bisa seperti ini : */

SELECT
NIS,
NAMA
FROM
TEST.MURID
WHERE
TGL_LAHIR = TO_DATE(’01JAN1978′, ‘DDMONYYYY’)
ORDER BY NAMA;

Perhatikan penggunaan  TO_DATE dan TO_CHAR pada contoh di atas. Maka praktekkan seperti contoh-contoh tersebut untuk kasus yang lain.

  1. May 6, 2010 at 09:05

    Wow keren, mantep nih, lagi butuh pencerahan, terima kasih..😀

  2. oracle1st
    November 29, 2010 at 21:56

    @Bayu…
    tapi hati-hati lho penggunaan TO_CHAR di klausa WHERE seperti :

    WHERE
    TO_CHAR(TGL_LAHIR, ‘DD-MON-YYYY’) = ‘01-JAN-1978′

    karena index pada TGL_LAHIR tidak akan jalan, akhirnya query tersebut akan lambat dibanding dengan :

    WHERE
    TGL_LAHIR = TO_DATE(’01JAN1978′, ‘DDMONYYYY’)

    tunggu pembahasannya ya….

  3. Wong Ganteng
    November 30, 2010 at 21:47

    hmm… betul betul betul

  4. February 25, 2012 at 22:18

    thank’s sangat membantu sekali tutorialnya …

  5. Mulyadi
    September 25, 2012 at 23:35

    Mau tanya nih gan,,
    saya baru coba pakai Oracle, lalu sdh buat database dan coba melakukan entry data dgn program.
    khusus utk type DATE, ada sedikit masalah nih..
    misalnya pada saat entry data tgl: 25-09-2012
    nah, data yg ter-record di oracle adalah : 20-09-0025
    setting apanya yg perlu dirubah gan..?
    mohon pencerahannya…🙂

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: