我必须在 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-dd, logs.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)
这些都不起作用
我认为logs.created
必须是时间戳,laravel 有多种方法可以按给定日期进行选择和过滤。
$query->whereDate('logs.created_at', '2020-01-25')
$query->whereRaw('DATE(logs.created_at) = ?', ['2020-01-25'])
$query->where(DB::raw('DATE(logs.created_at)'), '2020-01-25')
mysqlDATE
函数使用默认格式从给定时间戳(或字符串)转换日期Y-m-d
或yyyy-mm-dd
希望这对您有帮助