Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较laravel 5.4中的时间和日期_Php_Laravel_Laravel 5 - Fatal编程技术网

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);