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

Php Laravel更改where子句中的日期格式以匹配Carbon::now(),php,laravel,date-formatting,laravel-query-builder,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

我需要根据未来发生的日期和
条目包含日期格式:

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();
如果同一列中的某些行中的日期格式确实不同,则您确实需要修复此问题,而不是对其进行一些肮脏的修复。

您需要使用来转换字符串

$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

为什么您的日期在表中不是标准格式?我希望是这样。“我现在无法控制它。”@Klav你说你无法控制是什么意思?您可以编写一个简单的查询,将所有日期行更改为一种格式。@AlexeyMezenin,因为更改表中的日期格式不是唯一需要更新的内容。@Klav,在这种情况下,这是唯一正确的方法。以不同的格式保存行是胡说八道。我怀疑做相关的修复(去掉改造过的车轮,改用碳纤维)太难了。我本来就试过了,但它不能正确地确定日期。>=什么都没拉,现在好了,我改变了方法,工作很好@aynber