如何使用 created_at
字段仅获取今天创建的记录,而不是其他日期或时间?
我考虑使用 ->where('created_at', '>=', Carbon::now())
但我不确定它是否有效。
如何使用 created_at
字段仅获取今天创建的记录,而不是其他日期或时间?
我考虑使用 ->where('created_at', '>=', Carbon::now())
但我不确定它是否有效。
这段代码将会返回今天创建的所有文章!!!如果你在这个代码中加入时间,那么你将会得到那个特定时间创建的文章而不是今天的。
Carbon::today() 会返回类似这样的内容:2021-08-06T00:00:00.000000Z
,因此使用 Model::where('created_at', Carbon::today())
只会返回在当前日期凌晨12点创建的记录。
应该使用 Model::where('created_at', '>=', Carbon::today())
。
以下代码对我有效
$today_start = Carbon::now()->format('Y-m-d 00:00:00');
$today_end = Carbon::now()->format('Y-m-d 23:59:59');
$start_activity = MarketingActivity::whereBetween('created_at', [$today_start, $today_end])
->orderBy('id', 'ASC')->limit(1)->get();
我见过一些人使用原始查询来完成这个操作,例如:
$q->where(DB::raw("DATE(created_at) = '".date('Y-m-d')."'"));
或者不使用原始查询通过日期时间,像这样:
$q->where('created_at', '>=', date('Y-m-d').' 00:00:00'));
$q->whereDate('created_at', '=', date('Y-m-d'));
或者,当然,你可以使用Carbon代替PHP date():
$q->whereDate('created_at', '=', Carbon::today()->toDateString());
这不仅仅是 whereDate。还有三个更有用的函数可以过滤日期:
$q->whereDay('created_at', '=', date('d'));
$q->whereMonth('created_at', '=', date('m'));
$q->whereYear('created_at', '=', date('Y'));
$records = User::whereDate('created_at', date('Y-m-d'))->get();
或者
use Carbon\Carbon;
$records = User::whereDate('created_at', Carbon::today())->get();
$records = User::where('created_at' = CURDATE())->GET()); print($records);
$records = User :: where ('created_at'= CURDATE ()) - & gt; GET(); 打印($ records);
我在2022年4月22日使用laravel9,如何获取“今天”的记录:
我编辑了“config/app.php”文件中的“timezone”(大约在第72行),将其设置为我的时区“Asia/Bangkok”
我的查询代码如下:
$get = User::whereDate("created_at","=",date("Y-m-d",time() ) )->get();
将获取今天创建的字段。
我不知道这是否是正确的方法或者是否有更好的代码,但只要它对我有效,我就没问题。