Php 比较laravel 5.4中的时间和日期
我需要检查时间是在某个时间字符串之后还是之前。我得到的数据库有多种格式的时间,如Php 比较laravel 5.4中的时间和日期,php,laravel,laravel-5,Php,Laravel,Laravel 5,我需要检查时间是在某个时间字符串之后还是之前。我得到的数据库有多种格式的时间,如00:00:00和1970-01-01 07:00:00。以下是我试图做的: data = {some_id:1, time_1:'1970-01-01 07:00:00', time_2:'1970-01-01 07:00:00'} $results = $this->model->select( 'table.value as value' ) -&g
00:00:00
和1970-01-01 07:00:00
。以下是我试图做的:
data = {some_id:1, time_1:'1970-01-01 07:00:00', time_2:'1970-01-01 07:00:00'}
$results = $this->model->select(
'table.value as value'
)
->where('table.some_id', '=', $data['some_id'])
->where('table.time_1', '=>', $data['time_1'])
->orWhere('table.time_2', '<=', $data['time_2'])
->get();
data={some_id:1,time_1:'1970-01-01 07:00:00',time_2:'1970-01-01 07:00:00'}
$results=$this->model->select(
“table.value作为值”
)
->其中('table.some_id','=',$data['some_id']))
->其中('table.time_1','=>',$data['time_1']))
->当然,它将返回所有记录
因为查询的逻辑不正确
对于您的查询,sql将如下所示:
SELECT table.value AS value
FROM table
WHERE
table.some_id = 1
AND
table.time_1 <= '1970-01-01 07:00:00' OR table.time_2 => '1970-01-01 07:00:00'
选择table.value作为值
从桌子上
哪里
表1.1\u id=1
及
表1.time_1'1970-01-01 07:00:00'
但它应该是:
SELECT table.value AS value
FROM table
WHERE
table.some_id = 1
AND
(table.time_1 <= '1970-01-01 07:00:00' OR table.time_2 => '1970-01-01 07:00:00')
选择table.value作为值
从桌子上
哪里
表1.1\u id=1
及
(表1时间'1970-01-01 07:00:00')
要实现此目的,请执行以下操作:
$results = $this->model->select(
'table.value as value'
)
->where('table.some_id', '=', $data['some_id'])
->where(function($q) use ($data) {
return $q->where('table.time_1', '=>', $data['time_1'])
->orWhere('table.time_2', '<=', $data['time_2']);
})
->get();
$results=$this->model->select(
“table.value作为值”
)
->其中('table.some_id','=',$data['some_id']))
->其中(函数($q)使用($data){
返回$q->where('table.time\u 1','=>',$data['time\u 1'])
->orWhere('table.time_2','这将是常规查询
数据={some_id:1,time_1:'1970-01-01 07:00:00',time_2:'1970-01-01 07:00:00'}
$results = $this->model->select('table.value as value')
->where([
['table.some_id', '=', $data['some_id']],
[function($query) use($data){
query->where('table.time_1', '=>', $data['time_1'])
->orWhere('table.time_2', '<=', $data['time_2']);
}]
])->get();
日期为“2017-06-14 23:00:00”
如果您有任何问题,请告诉我。您在数据库中为这些时间字段使用的是什么类型的字段?请注意,使用orWhere不会仅“附加/链接”到前面的where,而是整个查询,这意味着如果最后一条语句为真,则其他where不再需要为真时间和日期时间需要为同一个mpared,日期部分被忽略。这给了我“未找到的位置”和“未定义的变量数据”。你知道我将如何比较07:00:00我正在比较Time
和Datetime
,需要忽略Datetime的日期部分。谢谢你的帮助,到目前为止它非常清楚。如果我在da中只有时间呢tabase如上午9:00。我如何将其与当前时间进行比较?@YasirIjaz在这种情况下,有时间
字段类型,而不是日期
,也不是日期
。如果您有VARCHAR
,字符
,文本
,保持上午9:00
,请确保您有可比较的字段类型。查找->时间
使用时间编写模式的方法
$date = 1497454883;
$date = date('Y-m-d H:i:s',$date);