• 15-07-2014, 18:06:38
    #1
    Merhaba arkadaşlar,

    Bir yanlışlık yapmam nedeniyle tarihe göre sıralamada sorun yaşıyorum. Ben en son kayıttan eskiye doğru sırala diyorum yani. order by tarih ASC gibisinden.

    Lakin tarihi yanlışlık ile veritabanına gün-ay-yıl olarak kayıt etmişim ve düzeltemem. yıl-ay-gün olarak kayıt edilmesi lazımdı stabilite ve genel anlamda olması için. Lakin bu şekilde yaptığımda tarihi düzgün sıralamıyor. Nasıl toparlayabilirim ?

    strtotime kullanarak vesaire ?
  • 15-07-2014, 18:42:52
    #2
    Üyeliği durduruldu
    veri tabanındaki bölümü date(0000-00-00) şeklinde yapıp ASC ve DESC ile sıralayabilirsin.
  • 15-07-2014, 21:03:47
    #3
    GlobalYazilim adlı üyeden alıntı: mesajı görüntüle
    veri tabanındaki bölümü date(0000-00-00) şeklinde yapıp ASC ve DESC ile sıralayabilirsin.
    Hocam bu şekilde yapınca var olan tarihler 0000-00-00 oluyor.
  • 15-07-2014, 22:03:05
    #4
    Üyeliği durduruldu
    olması gereken o hocam.
  • 15-07-2014, 23:35:19
    #5
    tarihleri güncelletebilirisiniz. while döngüsü ile hepsini düzeltebilirsiniz.
  • 16-07-2014, 03:58:19
    #6
    bende diğer arkadaşlar gibi en sağlıklı olan tüm tarihleri bir while döngüsüyle yıl-ay-gün olarak kaydetmenizi ve tarih kolonunuzu date tipinde tutmanızı önereceğim.

    ama ek olarak denemedim çalışırmı çalışmazmı bilemiyorum ama aşağıdaki gibi bir dener misiniz ?

    tarih formatınızın gün-ay-yıl olduğunu (aralarda tire) varsayalım

    select tarih, STR_TO_DATE(tarih,'%d-%m-%Y') as tarih_eng order by DATE_FORMAT(tarih_eng,'%Y-%m-%d') Asc
    bu sorguda önce sizin formatınızı date tipine çevirdik tarih_eng olarak tanımladık sonrada order by içinde global (yıl-ay-gün) formatına çevirip öyle sıralattık.
  • 16-07-2014, 12:01:56
    #7
    While kullanarak tarihi Y-m-d olarak değiştirdim teşekkürler arkadaşlar.
  • 17-07-2014, 14:22:55
    #8
    Şu şekilde de çözebilirdin hocam
    Select (now-tarih) as fark,bla,bla from tablom
    where blabla = blabla
    order by fark

    ben direk now dedim de now(datetime) gibilerinden fonksiyonlar ile gün arasını alabilir sonra o sonuca göre order ederdin...