php mysql tarih / zaman soru

3 Cevap php

Ben Kullanıcı Yönetimi, veri girmek için bir ön konsol ve ön denetim parçalarını arka uç konsola sahip küçük bir uygulama inşa ettik. Önuç timestamped olan bir MySQL veritabanı satır ekler. Backend X ve Y tarihleri ​​arasında veritabanından satırları seçmek mümkün olmalıdır.

Her şeyi ile gerçekten mücadele ediyorum tarih bölümü hariç, şimdiye kadar çalışıyor.

Önuç SQL girişi (kaldırıldı sahte kod ile basitleştirilmiş) bu gibi görünüyor:

$date = time();
$top_level_category = $_POST['top_level_category'];
$sub_level_category = $_POST['sub_level_category'];
$company = $_POST['company'];
$agent_name = $_POST['agent_name'];
$ticket_id = $_POST['ticket_id'];

$sql = "INSERT INTO dacc_data ("
     .     "id, top_level_category, sub_level_category, "
     .     "agent_name, date, ticket_id, company"
     . ") VALUES ("
     .     "NULL, '$top_level_category', '$sub_level_category', "
     .     "'$agent_name', FROM_UNIXTIME('$date'), '$ticket_id', '$company'"
     . ")"
;

$result = mysql_query($sql) or die (mysql_error());

Bu iş tamam gibi görünüyor, zaman damgası aldı ve benim tablodaki bir datetime sütun ilave ediliyor. Mm: ss veritabanı içinde It gg / aa / yyyy olarak görüntüler.

Yani ... benim ilk soru - bu bunu yapmak için doğru yolu nedir?

İkinci soru olan, SQL deyiminin ne tür Ben X ve Y tarihi arasındaki satırlar dizisi çekin gerekir.

Bu biraz başıboş ise özür dilemek, açık umuyoruz ancak daha fazla bilgiye ihtiyacınız varsa bana bildirin.

3 Cevap

MySQL datetime tire ile biçimlendirilmiş olmalıdır:

YYYY-AA-GG SS: DD: SS

http://dev.mysql.com/doc/refman/5.0/en/datetime.html

Sonra birkaç yol aralıkları tarih için sveyagulama yapabilirsiniz:

select *
from table
where date >= '[start date]' and date <= '[end date]';

veya

select * 
from table 
where date between '[start date]' and '[end date]';

where "table" is the name of your database table and "date" is the name of your datetime field.

Sen doğru. Ben Veritabanı "MM: YYYY-AA-GG SS SS" sahip olduğunu teyit edebilir - Ben auto-biçimleri, hızlı DB tarama için DATETIME sütunu SQLWave editörü kullanıyorum.

// Initial questions still stand :)

Yoksa, sadece cevap güncellenen fark değil - çok teşekkür ederim! Ben aslında benim NEREDE yanlış tarih biçimini belirterek Çünkü esas olarak, boşuna çok aynı sorgusu birkaç kez denedim oldu. SQLWave tarafından yanıltılmış: (

Geri artık komut satırını kullanarak!

"SQL deyiminin ne tür Ben X ve Y tarihi arasındaki satırlar dizisi çekin gerekir?"

SELECT * FROM `dacc_data` where `date` between "2008-11-01" and "2008-12-01"