Usando Mongo y PHP, ¿cómo se almacena un tipo de fecha y hora y luego se recupera por fecha?
Esto es lo que tengo para insertar, pero almacena la fecha como una cadena:
$collection->insertOne(['date_created' => '2017-01-02 17:20:15']);¿Cómo debo enviar la fecha a Mongo para almacenarla como un tipo de fecha y hora para poder hacer las búsquedas adecuadas?
Coloque una instancia de esta clase en la matriz: http://php.net/manual/en/class.mongodb-bson-utcdatetime.php
Debe usar los objetos BSON en las matrices de PHP: http://php.net/manual/en/book.bson.php
Esos se serializan correctamente antes de pasar a Mongo.
$test = array( "_id" => 123, "name" => "This is an example", "date_created" => new MongoDB\BSON\UTCDateTime(time() * 1000) ); $collection->insert($test);El time() se multiplica por 1000, porque el constructor quiere los milisegundos transcurridos desde la época de Unix, y time() devuelve los segundos transcurridos desde la época de Unix. Ver:http://php.net/manual/en/mongodb-bson-utcdatetime.construct.php
ACTUALIZACIÓN: para recuperar la fecha/hora en formato ISO, simplemente convierta el puño del objeto UTCDateTime a DateTime:
$date_created = $test["date_created"]; $iso_date = $date_created->toDateTime()->format("Ymd H:i:s");