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

问题描述 投票:2回答:2

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

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();
php laravel date-formatting laravel-query-builder
2个回答
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


0
投票

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

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

如果日期格式在同一列中的某些行中确实不同,那么您确实需要修复此问题,而不是为此进行一些脏修复。

© www.soinside.com 2019 - 2024. All rights reserved.