Laravel 将数据库中的字符串日期与碳日期进行比较

Laravel compare string date in database with carbon date

我在数据库中将日期存储为 VARCHAR 时犯了一个错误,这里看起来像 02/12/2018 我已经使用 carbon 创建了一个变量来获取当前日期 +14 天.

$current_date_plus_14 = Carbon::now() -> addDay(14) -> format('d/m/Y');

问题是

我正在尝试将数据库中存储为 VARCHAR 的日期 02/12/2018 与我使用 Carbon 生成的日期 [=31] 进行比较=]2017/09/04.

Eloquent代码

$gquery = Client::where('required_date', '>=', $current_date_plus_14) -> get();

我得到的

它没有得到任何结果,因为它只比较 required_date 中的日期和 碳日期[=40 中的日期=].

虽然它应该 return 值,因为存在超过 1 年的差异?

试试这个将日期作为字符串(可以与 varchar 一起使用)转换为实际日期的函数

private function convertDateString($date)
{
    if (is_string($date)) {
        $date = Carbon::parse($date,new DateTimeZone('YOUR_DATE_TIME_ZONE'));
    }

    return $date;
}

即使您的字段是 VARCHAR 而不是 DATETIMEDATE,您仍然可以通过添加属性将其标记为 Eloquent 模型中的日期名称为 $dates。您还必须更改模型的 $dateFormat,因为您使用的是非 Y-m-d H:i:s 格式。