Monday, March 15, 2004

Ada kisah lucu waktu main-main sama kolom date/time/datetime di PostgreSQL kemarin.

Seharian aku mikir, gimana caranya melakukan operasi aritmatik pada salah satu bagian aja dari kolom-kolom itu. Misalnya, ngejumlah bagian detik aja dari kolom time, atau bagian hari aja dari kolom tanggal, atau ngitung durasi dari kolom menit dan detik gitu.

Pertamanya, aku pede aja, langsung ketik SELECT SUM(kolom durasi (jenis time)) FROM tabelku BLA... BLA... tapi terus, kagetnya, dia bilang 'no aggregate sum function for this type of column' (atau yang kayak-kayak gitu deh). Jadi bertanya-tanya, kalo di MySQL kok bisa ya, dan jadi bertanya-tanya keabsahan hasil di MySQL itu. (Anybody can confirm on this?)

Udah deh, ngoprek dokumentasinya seharian.
Nggak ketemu juga padanannya SUM buat date/datetime.

Daripada pening nyari sana-sini, aku coba belajar bikin plug-in buat fungsi-2 baru di postgreSQL. Gak tanggung, aku langsung milih bikin pakai C. Baca-baca sampel dan dokumentasinya bentar, dan off I go. Ngoprek lagi seharian. Jadi fungsi yang kuinginkan. Tinggal instalasi dan ditest. Eh, gagal lagi. Kali ini aku nggak ngerti sama sekali kenapa.

Hampir frustasi.
Aku langganan milis postgres-general, terus nanya disitu. Sambil aku baca lagi dokumentasinya, pelan-pelan. Jawaban dari milis belum dateng, aku ketemu fungsi yang kuinginkan. EXTRACT namanya.

Jadinya gini "SELECT SUM(EXTRACT seconds from durasi) FROM ..." (well, sort of... gak inget lagi...)

The power of good documentation.

No comments: