【问题标题】:Between two(2) Dates with date format for column (Y-m-d)两 (2) 列日期格式的日期之间 (Y-m-d)
【发布时间】:2019-05-14 12:38:28
【问题描述】:

所以我将此代码作为收集$start_date$end_date 的发布请求

$start_date = date("Y-m-d",strtotime($request->start_date));


$end_date = date("Y-m-d",strtotime($request->end_date));

我有这个查询来获取两(2)个日期之间的所有记录

$date_time_records = DateTimeAPI::select('ACNo','datetime','state','deviceID','status')
        ->whereBetween('datetime', [$start_date, $end_date])
        ->get();

但问题是:

mysql中datetime的字段格式为(Y-m-d h:i:s)

我想要做的是匹配日期范围和字段datetime 具有相同的格式。

点赞('Y-m-d')

如果start_dateend_date 格式化为(Y-m-d h:i:s),则选择查询可以正常工作。但我只需要(Y-m-d)

【问题讨论】:

  • 我不熟悉php,但你不能用date("Y-m-d 0:0:0",...吗?
  • start_date 和 end_date 只有 Y-m-d 数据。像 start_date = "2019-04-05" 和 end_date =2019-04-05" 并且我的数据库中的 datetime 字段包含 datetime = "2019-04-05 8:28:00" 的记录
  • Laravel 将日期存储为"Y-m-d H:i:s" 格式以获得基于秒的结果。您可以按照以下答案使用。此外,如果您想从早到晚获取当前日期之间的数据,则必须将日期编辑为 $start_date = date("Y-m-d 00:00:00",strtotime($request->start_date));$end_date = date("Y-m-d 23:59:59",strtotime($request->end_date));
  • 我只想不包括要过滤的时间,这就是为什么 start_date 只包含这种格式的数据(Y-m-d)

标签: php mysql laravel eloquent


【解决方案1】:

修改你的代码

$start_date = date("Y-m-d H:i:s",strtotime($request->start_date));
$end_date = date("Y-m-d H:i:s",strtotime($request->end_date));

或使用碳

use Carbon\Carbon;
Carbon::parse($start_date)->format('Y-m-d H:i:s');
Carbon::parse($end_date)->format('Y-m-d H:i:s');

【讨论】:

    【解决方案2】:

    Laravel 5

    使用->whereDateBetween() 代替->whereBetween()

    ->whereDateBetween('datetime', [$start_date, $end_date])

    【讨论】:

      【解决方案3】:

      您也可以使用

      $query->whereDate('datetime', '>=', $start_date)->whereDate('datetime', '<=', $end_date);
      

      【讨论】:

        【解决方案4】:

        正如你提到的那样

        your mysql column is of format - Y-m-d h:i:s
        and format in date range variable is - Y-m-d.
        

        所以,你可以使用 MYSQL 的DATE() 函数并在你的查询中实现如下

        $date_time_records = DateTimeAPI::select('ACNo','datetime','state','deviceID','status')
            ->whereBetween('DATE(datetime)', [$start_date, $end_date])
            ->get();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-25
          • 2014-04-27
          • 1970-01-01
          • 2022-06-12
          • 2010-12-23
          • 1970-01-01
          • 2023-03-08
          • 2018-07-03
          相关资源
          最近更新 更多