Laravel - 从带有碳的mysql数据库格式化日期

时间:2018-05-03 13:36:01

标签: php mysql laravel php-carbon

在我的Laravel项目中,我有一个My SQL数据库,其中包含以下列:

 |   requested_at  |
 2018-02-03 12:00:00
 2018-03-03 11:00:00

我想从此列获取时间戳(requested_at)超过60天的所有项目:

$now = Carbon::now ();  

$60days  = DB::table('exampletable')->where('requested_at', '=', $now->subDays(60))->get();

对于我的以下代码,我需要格式化我的列requested at中的日期格式。 我只想在没有时间的情况下收到这个2018-03-03的日期。

我玩了一些碳方法,但它根本不起作用:

$format60 = Carbon::createFromFormat('Y-m-d', $60days);

2 个答案:

答案 0 :(得分:1)

你只能通过mysql实现这一点,不需要碳 只需使用mysql的 datediff() now()
这样做

$days60  = DB::table('exampletable')
    ->whereRaw('datediff(now(),requested_at) = 60')
    ->get();

示例: - enter image description here

答案 1 :(得分:1)

您似乎正在使用TIMESTAMP类型

->where('requested_at', '<=', now()->subDays(60)->startOfDay())->get();

如您所见,无需格式化Carbon实例。

打破一切:

now() // Laravel helper to get Carbon::now()
->subDays(60) // subtract 60 days
->startOfDay() // set time part of timestamp to start of the day
  

注意:将requested_at添加到$dates array in your model以便于使用