在 Laravel contorller 中将日期时间字段转换为 SQL 查询中的日期

Had*_*lah 5 php sql laravel

我必须在 Laravel 控制器中执行 sql 查询,该查询包括 Caluse,其中它将数据库中日期时间类型的字段与我从具有日期类型的 Blade 获取的另一个字段进行比较,所以我必须转换数据库字段从日期时间类型转换为日期类型

这是我在 laravel 控制器中的查询,我尝试过 dateformat 但 id 不起作用

 $querydate = $request->get('querydate');
 $data = DB::table('logs')

        ->select('logs.user_id','logs.NUMCCP','logs.created_at') 

           ->where  (DB::raw('(DATE_FORMAT(logs.created_at,"%Y-%m-%d"))'),$querydate)
           ->orderby('logs.created_at','desc') 
        ->get();
Run Code Online (Sandbox Code Playgroud)

$querydate 的格式为yyyy-mm-ddlogs.created_at 的格式为 datetime 类型,$querydate的格式为 date 类型,所以我尝试首先将messages.created_at转换为日期类型,之后我想在记录时获取信息。 created_at等于$querydate

我尝试了在网上找到的几种语法,但它们不起作用,例如: ->whereRaw("DATE_FORMAT(logs.created_at, '%Y-%m-%d') = $querydate") ->where(DB::raw("(DATE_FORMAT(logs.created_at,'%Y-%m-%d'))"),$querydate) ->orWhere('CAST(logs.created_at AS DATE)', '=', $querydate) 这些都不起作用

Mal*_*dze 3

我认为logs.created必须是时间戳,laravel 有多种方法可以按给定日期进行选择和过滤。

  1. $query->whereDate('logs.created_at', '2020-01-25')
  2. $query->whereRaw('DATE(logs.created_at) = ?', ['2020-01-25'])
  3. $query->where(DB::raw('DATE(logs.created_at)'), '2020-01-25')

mysqlDATE函数使用默认格式从给定时间戳(或字符串)转换日期Y-m-dyyyy-mm-dd

希望这对您有帮助

  • 当然@Malkhazi 非常高兴,再次感谢我已经迷失了一段时间了 (2认同)