【问题标题】:Laravel, filter timestamp by date onlyLaravel,仅按日期过滤时间戳
【发布时间】:2017-01-31 03:27:38
【问题描述】:

我想按用户 ID 和 created_at 字段过滤表。唯一的 created_at 是时间戳,我只想按日期而不是时间查询。

所以像 -

$messages = Message::where(['from' => $fromUser->id, 'created_at' => 'TODAY'S DATE'])->get();

【问题讨论】:

  • 您可以使用原始方法并将 created_at 与 DATE(created_at) 括起来以仅比较日期部分
  • 原始方法?你有例子吗?
  • 查看我的答案以获取示例 :) 希望对您有所帮助!
  • 你能给我举一个你的数据库中格式化日期的例子吗?
  • Laravel 中的时间戳格式为:'YYYY-MM-DD HH:MM:SS"

标签: php laravel


【解决方案1】:
$query->whereDate('created_at', '=', date('Y-m-d'));

$query->whereDate('created_at', '=', Carbon::today()->toDateString());

【讨论】:

  • 这是一个比使用 whereRaw 更好的选择,应该是答案。谢谢哈米德!
  • 是的,就我而言,只有哈米德的答案在生产服务器上有效!谢谢
【解决方案2】:

我知道(在 Laravel 中)比较 DATEcreated_at 的唯一方法是使用 whereRaw,因此对于您的示例,您可以使用以下内容:

Message::where(...)->whereRaw('DATE(created_at) = ?', [$today])->get();

你可以找到更多关于 Eloquent 的信息以及它的其他方法here

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2015-07-19
    • 2021-09-01
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多