Laravel查询MySQL时whereDate()与where()的区别及用法
Laravel中whereDate()与where()查询日期的区别
核心差异
- whereDate():仅针对字段的日期部分做匹配,自动忽略时间戳里的时分秒信息。
- where():进行完整的 datetime/timestamp 精确匹配,要求字段值与条件完全一致(包括时分秒)。
示例执行结果
whereDate()示例:
$posts = Post::whereDate('created_at', Carbon::today())->get();
对应的SQL语句大致为:
SELECT * FROM posts WHERE DATE(created_at) = '2024-05-20';
返回当天任意时间创建的所有帖子,不管具体创建时间是几点几分。
where()示例:
$posts = Post::where('created_at', Carbon::today())->get();
Carbon::today()生成的是当天00:00:00的时间戳,对应的SQL是:
SELECT * FROM posts WHERE created_at = '2024-05-20 00:00:00';
仅返回当天0点整精确创建的帖子,实际场景中几乎不会有符合条件的数据。
正确用法
若要获取今日创建的所有帖子(不考虑具体时间),必须使用**whereDate()**方法。
内容的提问来源于stack exchange,提问作者Malik Muhammad Awan
相关产品推荐
相关产品推荐

