【问题标题】:Query to shows data on date range查询以显示日期范围内的数据
【发布时间】:2021-04-24 16:32:19
【问题描述】:

我有这样的数据库表格:

          | ID | Vehicle | Date_start          | Date_end            | Status |
          |  1 | A       | 2021-01-17 12:00:00 | 2021-01-18 13:00:00 | Finish |
          |  2 | B       | 2021-01-19 12:00:00 | 2021-01-21 12:00:00 | In Use |

然后,我有这样的代码:

      $datestart = '2021-01-19 '.Date("H:i");
      $dateend = '2021-01-20 '.Date("H:i");
      $cek =Peminjamanrandis::where('status','!=',"Cancel")
             ->where('status','!=','Selesai')
             ->where('status','!=','Pengajuan Peminjaman')
             ->where('status','!=','Tidak Disetujui')
             ->where(function ($query) use($datestart,$dateend) {
               $query->whereBetween('date_start',[$datestart,$dateend])
                     ->orwhereBetween('date_end',[$datestart,$dateend]);
              })
             ->where(function ($query) use($datestart) {
                 $query->where('date_start', '<=', $datestart)
                       ->orWhere('date_start', '>=',$datestart);
             })
             ->where(function ($query) use($dateend) {
                 $query->where('date_end', '<=', $dateend)
                       ->orWhere('date_end', '>=',$dateend);
             })
          ->get(['id_randis']);

然后我有一个接收日期开始和日期结束的表单输入。 问题:当用户输入日期开始 = 2021-01-19 和日期结束 = 2021-01-20 或日期开始 = 2021-01-20 和日期结束 = 2021-01-20 时。它什么也没显示。

我的目标是当用户这样输入时,它会显示车辆 B(ID 2)。我该怎么做?

【问题讨论】:

  • 您不希望开始日期为当天的开始日期,结束日期为当天的结束日期吗?
  • @lagbox 开始日期和结束日期取决于用户输入,我只是尝试这样的情况并找到错误。

标签: mysql sql database laravel eloquent


【解决方案1】:

您可以使用whereBetween('column_name in your db table', ['start_date', 'end_date'])。它通常是这样工作的,只是确保所有日期输入中的日期格式相同。

【讨论】:

  • 已经尝试过了,开始日期和结束日期2021-01-20时也没有显示任何内容
【解决方案2】:

将您的.Date("H:i") 更改为.Date("H:i:s")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    相关资源
    最近更新 更多