• 04-02-2009, 20:19:37
    #1
    Merhaba arkadaşlar. (Başlığı yanlış yazmışım bu arada moderatör düzenlerse başlığı google dan arayan arkadaşlar için iyi olur . )

    Veritabanında datetime tipinde kayıtlarım var. (2009-01-02 19:20:22 gibi)

    Şimdi ben date fonksiyonu ile bugünkü tarihi veritabanında ki formatta alabiliyorum. Bugünkü tarihten veritabanında ki tarihi çıkartıp arada ki farkı hesaplamak istiyorum. (10 saniye , 5 dakika , 1 saat, 2 gün, 3 ay , 4 yıl gibil)

    Tarihler arasında çıkarma işlemini yapan bir php fonksiyonu falan var mı acaba? Yada nasıl yapabiliriz bu hesaplamayı?

    yardımcı olursanız sevinirim.
  • 04-02-2009, 20:28:16
    #2
    Üyeliği durduruldu
    ör:

    <?php 
    $tarih1 = "11/15/1999";
    $tarih2 = "12/10/2000";
    
    list ($ay1, $gun1, $yil1) = explode ("/", $tarih1);
    list ($ay2, $gun2, $yil2) = explode ("/", $tarih2);
    
    $zamanpulu1 = mktime (0, 0, 0, $ay1, $gun1, $yil1);
    $zamanpulu2 = mktime (0, 0, 0, $ay2, $gun2, $yil2);
    $fark = ($zamanpulu1 > $zamanpulu2) ? ($zamanpulu1 - $zamanpulu2) : ($zamanpulu2 - $zamanpulu1);
    
    print "Iki zaman arasindaki fark ";
    print date ("Y", $fark) - 1970;
    print "yil, " . (date("m", $fark) - 1);
    print "ay ve " . (date ("d", $fark) - 1);
    print "gundur.";
    ?>
  • 04-02-2009, 20:30:28
    #3
    Edit: arkadaş yazmış, ya da tarihleri saniye cinsinden alıp yapabilirsin.
  • 04-02-2009, 21:30:03
    #4
    Üyeliği durduruldu
    macchess adlı üyeden alıntı: mesajı görüntüle
    Edit: arkadaş yazmış, ya da tarihleri saniye cinsinden alıp yapabilirsin.
    aynen katiliyorum. ben tüm tarihsel işlemleri time() fonksiyonu değeri olarak kaydediyorum hep ordan işlem yapiyorum. yıllardır memnun bahtiyarim
  • 05-02-2009, 11:04:46
    #5
    Üyeliği durduruldu
    timestamp in bir dezavantaji var
    1970 - 2037 arasi degerler tutabilir
    yani dogum_tarihi gibi bir alan için timestamp kullanılmaz.
  • 05-02-2009, 11:08:16
    #6
    Üyeliği durduruldu
    KaleSoft adlı üyeden alıntı: mesajı görüntüle
    timestamp in bir dezavantaji var
    1970 - 2037 arasi degerler tutabilir
    yani dogum_tarihi gibi bir alan için timestamp kullanılmaz.
    tarihsel ifadeler derken özellikle işlem tarihinin kayıtlara eklenmesi ve log tutmada kullanılacak tarih formatı için avantajlı oluyor. timestamp yerine int alan oluşturulup time() değeride girilebilir.

    dipnot: Bu söylediğiniz kural mysql timestamp tipi için geçerli idi
    http://bugs.mysql.com/bug.php?id=9191
    sonradan düzletilmiş
  • 05-02-2009, 13:16:34
    #7
    Üyeliği durduruldu
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    tarihsel ifadeler derken özellikle işlem tarihinin kayıtlara eklenmesi ve log tutmada kullanılacak tarih formatı için avantajlı oluyor. timestamp yerine int alan oluşturulup time() değeride girilebilir.
    dipnot: Bu söylediğiniz kural mysql timestamp tipi için geçerli idi
    MySQL Bugs: #9191: TIMESTAMP/from_unixtime() no longer accepts 2^31-1
    sonradan düzletilmiş
    evet int alanına direk time() fonksiyonunu yazdırmak daha iyi oluyor
  • 05-02-2009, 13:37:37
    #8
    Üyeliği durduruldu
    bug degil bu , 32 bit int in max degeri
    yani : 2147483647 o da 19.01.2038 05:14:07 ' a tekabul ediyor.

    64 bit işletim sistemi + işlemcilerde limit büyüyor.
  • 05-02-2009, 13:49:23
    #9
    Üyeliği durduruldu
    KaleSoft adlı üyeden alıntı: mesajı görüntüle
    bug degil bu , 32 bit int in max degeri
    yani : 2147483647 o da 19.01.2038 05:14:07 ' a tekabul ediyor.
    64 bit işletim sistemi + işlemcilerde limit büyüyor.
    tamam ediyorda giderilmiş bu problem zaten