AA / GG / YYYY MySQL Tarih Arama AA / GG / YYYY

4 Cevap php

Ben aşağıdaki gibi görünüyor MySQL bir tablo var:

date        |storenum   |views 
-------------------------------
08/21/2009  |42         |3  
-------------------------------
08/22/2009  |43         |1 	  
-------------------------------
08/21/2009  |43         |4 	
-------------------------------
08/22/2009  |42         |22
-------------------------------

Ben bu alışılmamış tarih biçimi olduğunu biliyorum, ama kullanım kolaylığı için YYYY-MM-DD aksine ben onu kullanıyorum. Oysa ben iki tarihleri ​​arasında tüm "Kayıtları Görüntüle" almak için bu veritabanını aramak zorunda. Genel olarak çalışıyor ama ben 01/01/2010 böyle 01/01/2009 gibi bir tarihten itibaren arama yaparken ben sonucu olsun.

Herkes herhangi bir öneriniz var mı? Yapıcı eleştiri açığız. Teşekkürler!

4 Cevap

Tüm dürüstlük, sen tarihleri ​​depolamak biçimini değiştirmek. Ama şimdi ne ile çalışmak için, MySQL ile çalışabilirsiniz tarihleri ​​bu dönüştürmek için STR_TO_DATE() kullanarak içine bakmak olabilir.

Eğer kullanım kolaylığı söz - Ben şimdi çözmeye çalışıyoruz durum "kullanımı çok kolay değil" bir örnek olduğunu düşünüyorum :).

Ben MySQL tarihleri ​​varsayılan formatına sadık kalacağına

yyyy-mm-dd h:i:s //php's date formatting

ve DATE alanları kullanın. Bu tarihler sorunun arama / sokulmasına çözecektir. Eğer tarihleri ​​görüntülemek düzeltmek için bazı kodunu değiştirmek için gerekir ama.

Lütfen date alan türü nedir? Doğru kullanım için date veya datetime olacak ve size dates saklamak gibi bir varchar görünüyor ne görmeye olmalıdır. Haklı mıyım?

Bu da dizinleri ekleyebilirsiniz avantajı var, ve sonra aralıkları yalak mysql arama

benim önerim kullanıcı girmek ne olursa olsun. ve daha sonra aramak için bir mysql tarih biçimine dönüştürmek

gibi bir şey:

<?php

$mysql_time = date('Y-m-d H:m:s' strotime('05/11/2008'));

$query = sprintf("SELECT * FROM sometable < '%s'", $mysql_time);

?>

"YyyyMMdd" MySql emin tanıyacak biçimi ile arama yapmayı deneyin.