将日期与php中的mongoDB ISODate格式进行比较

时间:2013-09-26 08:51:39

标签: php mongodb date iso

我在mongoDB中有一个字段,比如birth_date,它是ISODate格式,如

ISODate("2013-08-15T23:00:00Z")

在php中,我以字符串格式获取日期

"2013-08-10"

我想要birth_date大于2013-08-10

的所有数据

为此,我有一个代码

$inputDate = "2013-08-10";
$dateFilter = array("\$gte",$inputDate); //works well when birth_date field is normat date string like "2013-08-16" but doesn't work with ISODate format as above
$dateRangeQuery = array("birth_date" => $dateFilter);

生成未正确过滤数据的查询{"birth_date":{"$gte":"2013-08-10"}}

以下代码段也无法正常工作

$dateFilter = array("\$gte",date("c", $inputDate)); 

生成查询

{"birth_date":{"$gte":"2013-08-10T00:00:00+05:30"}}

然后这也没有用

$dateFilter = new MongoDate($inputDate)

生成查询

{"birth_date":{"$gte":{"sec":2013,"usec":0}}}

请建议:)

2 个答案:

答案 0 :(得分:8)

正确的方法是在

中使用strtotime

$dateFilter = new MongoDate(strtotime($inputDate))

喜欢MongoDate class in PHP Manual

答案 1 :(得分:0)

另一种解决方案是创建mongoDate只需创建DateTime对象并使用DateTime对象获取时间戳,然后通过{{创建MongoDate对象1}}

timestamp