MongoDb DATE(FROM_UNIXTIME( <<VALUE>>)) 和 TIME(FROM_UNIXTIME( <<VALUE>>)) 等价
MongoDb equivalence of DATE(FROM_UNIXTIME( <<VALUE>>)) and TIME(FROM_UNIXTIME( <<VALUE>>))
我有一个查询,其中时间戳存储为 unix 时间(以毫秒为单位)和 UTC 查询参数
我的 SQL 查询就像
select *
from my_table
where parameter1 = 'Goofy'
and DATE(FROM_UNIXTIME(time)) >= '2020-05-13 00:00:00.000 0000' --startdate
and DATE(FROM_UNIXTIME(time)) <= '2020-05-15 00:00:00.000 0000' --enddate
and TIME(FROM_UNIXTIME(time)) >= '01-01-1970 12:22:00.000 0000' --starttime
and TIME(FROM_UNIXTIME(time)) <= '01-01-1970 19:33:00.000 0000' --endtime
在 Mongo (php API) 中,我的查询看起来像
$query = [
'$and' => [
['parameter1' => 'Goofy']
,['time' => [$gte => <conversion to unixtime for date '2020-05-13 00:00:00.000 0000' >]]
,['time' => [$lte => <conversion to unixtime for date '2020-05-15 00:00:00.000 0000' >]]
,['time' => [$gte => <conversion to unixtime for time '01-01-1970 12:22:00.000 0000' >]]
,['time' => [$lte => <conversion to unixtime for time '01-01-1970 19:33:00.000 0000' >]]
]
];
$cursor = (new MongoDB\Client())->selectCollection('myDb', 'myTable')->find($query,[]);
将日期和时间值分开看起来有点奇怪,通常您只使用包含日期和时间部分的日期时间值。
无论如何,将 Unix 时间转换为 Date
值非常简单。请注意,Unix 时间是自 1970-01-01 00:00:00Z
以来的秒数,而 JavaScript/MongoDB 自 1970-01-01 00:00:00Z
以来使用 Milli 秒
你的问题不是很清楚,可能是这个:
'time' => [$gte => new Date("2020-05-15 12:22:00")]
否则,将 Date/Time 值转换为整数应该在 php 上本地完成。
我有一个查询,其中时间戳存储为 unix 时间(以毫秒为单位)和 UTC 查询参数
我的 SQL 查询就像
select *
from my_table
where parameter1 = 'Goofy'
and DATE(FROM_UNIXTIME(time)) >= '2020-05-13 00:00:00.000 0000' --startdate
and DATE(FROM_UNIXTIME(time)) <= '2020-05-15 00:00:00.000 0000' --enddate
and TIME(FROM_UNIXTIME(time)) >= '01-01-1970 12:22:00.000 0000' --starttime
and TIME(FROM_UNIXTIME(time)) <= '01-01-1970 19:33:00.000 0000' --endtime
在 Mongo (php API) 中,我的查询看起来像
$query = [
'$and' => [
['parameter1' => 'Goofy']
,['time' => [$gte => <conversion to unixtime for date '2020-05-13 00:00:00.000 0000' >]]
,['time' => [$lte => <conversion to unixtime for date '2020-05-15 00:00:00.000 0000' >]]
,['time' => [$gte => <conversion to unixtime for time '01-01-1970 12:22:00.000 0000' >]]
,['time' => [$lte => <conversion to unixtime for time '01-01-1970 19:33:00.000 0000' >]]
]
];
$cursor = (new MongoDB\Client())->selectCollection('myDb', 'myTable')->find($query,[]);
将日期和时间值分开看起来有点奇怪,通常您只使用包含日期和时间部分的日期时间值。
无论如何,将 Unix 时间转换为 Date
值非常简单。请注意,Unix 时间是自 1970-01-01 00:00:00Z
以来的秒数,而 JavaScript/MongoDB 自 1970-01-01 00:00:00Z
你的问题不是很清楚,可能是这个:
'time' => [$gte => new Date("2020-05-15 12:22:00")]
否则,将 Date/Time 值转换为整数应该在 php 上本地完成。