日付をphpのmongoDBISODate形式と比較する
mongoDBにフィールドがあります。たとえばbirth_date
は
ISODate("2013-08-15T23:00:00Z")
PHPでは、文字列形式で日付を取得しています
"2013-08-10"
birth_date
が2013-08-10
より大きいすべてのデータが必要です
このためのコードがあります
$ inputDate = "2013-08-10";
$ dateFilter = array( "\ $ gte"、$ inputDate); // birth_dateフィールドが「2013-08-16」のような標準の日付文字列である場合は正常に機能しますが、上記のISODate形式では機能しません
$ dateRangeQuery = array( "birth_date" => $ dateFilter);
クエリ{"birth_date":{"$ gte":"2013-08-10"}}
を生成します。これはデータを正しくフィルタリングしていません。
次のコードスニペットも機能しませんでした
$dateFilter = array("\$gte",date("c", $inputDate));
クエリを生成します
{"birth_date":{"$ gte": "2013-08-10 T00:00:00 + 05:30"}}
それではこれも機能しませんでした
$dateFilter = new MongoDate($inputDate)
クエリを生成します
{"birth_date":{"$ gte":{"sec":2013、 "usec":0}}}
提案してください:)
答え :
解決策:
正しい方法は、
のようにstrtotime
を使用することでした。
$ dateFilter = new MongoDate(strtotime($ inputDate))
答え :
解決策:
現在のDateTimeを使用する必要がある場合 mongoDate
を作成する別の解決策があります。ただDateTime<を作成します。 /code>オブジェクトと
DateTimeオブジェクトを使用してtimestampを取得し、
{-codeで
MongoDate
オブジェクトを作成します-5}
$ inputDate = new DateTime( '2013-08-10');
$ mongoDate = new MongoDate($ inputDate-> getTimestamp());
$ current DateTime = strtotime('now'); //このメソッドはすでにtimestampを失います
$ mongoDate = new MongoDate($ current DateTime);
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。