Bir MYSQL tarihten bir dize gösterimine Bir PHP DateTime nesnesi alma

3 Cevap php

Ben bir tarihi MySQL sütunda saklamak istediğiniz bir DateTime var. Ben mysqli ve hazırlanmış deyimleri kullanıyorum.

Parametre bağlama, ben, bir türü olarak sadece dizeleri ve tamsayılar tarih belirleyebilirsiniz olamaz.

Nasıl DateTime MySQL tarih dize gösterimine dönüştürmek? DateTime sınıfında çok az belge var.

3 Cevap

Neredeyse http://stackoverflow.com/questions/136782/format-mysql-datetime-with-php bir kopya olarak kapatıldı ama aslında ters bir sorun olduğunu düşünüyorum. Bu soru MySQL getirilen bir tarihi biçimlendirmek için ne istedi, ve bir sorguya giriş için bir tarihi biçimlendirmek için nasıl soruyorsun.

Option 1:

SELECT * FROM MyTable WHERE DateTimeCol = ?

MySQL istiyor YYYY-MM-DD HH:MM biçimine değer biçimlendirmek yapabilirsiniz:

<?php $mysql_date = date('Y-m-d H:i:s', $timestamp); ?>

Sonra sorguya bir dize parametresi olarak gönderebilirsiniz.

Option 2:

SELECT * FROM MyTable WHERE DateTimeCol = FROM_UNIXTIME(?)

Sonra sorguya sayısal bir parametre olarak damgası değerini gönderebilirsiniz.

Option 3:

SELECT * FROM MyTable WHERE DateTimeCol = STR_TO_DATE(?, '%m/%d/%y')

Eğer MySQL STR_TO_DATE() function. For the formatting codes, see the DATE_FORMAT() işlevine biçimlendirmeyi belirtmek eğer, / zaman tarih dize temsilleri çeşitli gönderebilirsiniz.

Bu göz atın: Dates in PHP and MySQL

PHP5 ile tanıtıldı DateTime sınıfı kötü belgelenmiş olduğundan, ben bunu kullanmak için tavsiye etmem. Ben düzenli damgaları ile çalışmak çok daha kolay bulabilirsiniz!

Hala DateTime-nesneleri kullanmak istiyorsanız Ama, bir çözüm veritabanında saklayarak önce (unix) damgaları içine nesneleri dönüştürmek olacaktır. Veri tabanından bilgi okuduktan sonra DateTime-nesnelere damgaları geri dönüşümü.

, Bir zaman damgası DateTime-nesne oluşturmak argüman olarak zaman damgası ile date_create() kullanın. , Unix Epoch beri saniye sayısı sizin nesneleri temsil almak date_format($object, 'U') (büyük harf U) kullanın.