On Fri, Oct 01, 2004 at 09:55:26AM +0200, fade2blac wrote:
> Halo semua,
> 
> Begini,
> Saya menyimpan format tanggal dengan tipe bigint dan data
> disimpan dalam format timestamp. Untuk itu saya buat fungsi kurang lebih
> begini (dalam PHP):
> 
> function convert_date($var) {
>    if(!$var) { return false;
>    } elseif(ereg("-",$var)) {
>       list($day,$month,$year)=explode("-",$var);
>       return mktime(0,0,0,$month,$day,$year);
>    } elseif(ereg("/",$var)) {
>       list($day,$month,$year)=explode("/",$var);
>       return mktime(0,0,0,$month,$day,$year);
>    ## passing unix epoch time, returning date
>    } else {
>       return date("d-m-Y",(int)$var);
>    }
>  }
> 
> Masalahnya, ternyata timestamp itu di tiap komputer ternyata
> hasilnya beda untuk tanggal yang sama. Saya coba otak-atik hingga
> saya samain biosnya antara mesin 1 dan mesin 2 tapi tetap ada perbedaan
> detik. Bahkan sudah edit /etc/adjtime untuk disamain, tetap saja beda.
> 
> Masalah yang timbul adalah saat query seperti ini:
> 
> select a from b where tanggal>=123 and tanggal<=456
> 
> Hasil dibeda mesin, jadi beda range tanggal. Kadang lebih sehari, kadang
> kurang sehari. Saya coba fungsinya diganti menjadi gmdate() tapi
> ternyata 
> - timestamp->tanggal sama
> - tanggal->timestamp beda
> 
> contoh:
> convert_date('09-01-2004');
> mesin 1: hasilnya 1073624400
> mesin 2: hasilnya 1073602800
> 
> Ada yang pernah ngalamin sama dan gimana ngatasinnya?

sudah coba panggil langsung mktime()-nya:
   print(mktime(0, 0, 0, 1, 9, 2004));

saya coba di tiga komputer hasilnya sama.

Wardi

-- 
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis.php

Kirim email ke