Laravel 更改 where 子句中的日期格式以匹配 Carbon::now()
Laravel change date format in where clause to match Carbon::now()
我需要 select 条目基于未来发生的日期和
条目包含日期格式:
12/30/17
我正在尝试格式化日期并与 Carbon::now() 时间戳进行比较,但没有成功。
$now = \Carbon\Carbon::now();
$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(DATE_FORMAT(booking.date,'%Y-%m-%d 00:00:00'))"), ">=", $now)
->get();
我认为您真的不需要检查日期格式。此外,您在查询中有一些冗余的东西。只需这样做:
Booking::where('uid', auth()->id())->where('date', '>=', now())->get();
如果同一列中某些行的日期格式确实不同,您确实需要解决这个问题,而不是为此做一些肮脏的修复。
您需要使用 STR_TO_DATE 来转换字符串。
$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(STR_TO_DATE(booking.date,'%m/%d/%y'))"), ">=", $now)
->get();
STR_TO_DATE 会将 12/30/17
转换为 2017-12-30
$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(DATE_FORMAT(booking.date,'%Y-%m-%d'))"), ">=", $now)
->get();
我需要 select 条目基于未来发生的日期和
条目包含日期格式:
12/30/17
我正在尝试格式化日期并与 Carbon::now() 时间戳进行比较,但没有成功。
$now = \Carbon\Carbon::now();
$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(DATE_FORMAT(booking.date,'%Y-%m-%d 00:00:00'))"), ">=", $now)
->get();
我认为您真的不需要检查日期格式。此外,您在查询中有一些冗余的东西。只需这样做:
Booking::where('uid', auth()->id())->where('date', '>=', now())->get();
如果同一列中某些行的日期格式确实不同,您确实需要解决这个问题,而不是为此做一些肮脏的修复。
您需要使用 STR_TO_DATE 来转换字符串。
$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(STR_TO_DATE(booking.date,'%m/%d/%y'))"), ">=", $now)
->get();
STR_TO_DATE 会将 12/30/17
转换为 2017-12-30
$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(DATE_FORMAT(booking.date,'%Y-%m-%d'))"), ">=", $now)
->get();