Laravel在where子句中更改日期格式以匹配Carbon :: now()

时间:2017-12-29 17:29:09

标签: php laravel date-formatting laravel-query-builder

我需要根据将来发生的日期选择条目 条目包含日期格式:

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

3 个答案:

答案 0 :(得分:4)

您需要使用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

答案 1 :(得分:0)

我认为你真的不需要检查日期格式。此外,您在查询中有一些冗余的东西。就这样做:

Booking::where('uid', auth()->id())->where('date', '>=', now())->get();

如果同一列中某些行的日期格式确实不同,那么你真的需要修复它,而不是为此做一些脏修复。

答案 2 :(得分:0)

$bookings = DB::table('booking')
    ->select('booking.*')
    ->where('booking.uid', '=', Auth::id())
    ->where(DB::raw("(DATE_FORMAT(booking.date,'%Y-%m-%d'))"), ">=", $now)
    ->get();