【问题标题】:I have StartDate and EndDate of current month. I want to compare database records of every date which are in between those two dates我有当月的开始日期和结束日期。我想比较这两个日期之间的每个日期的数据库记录
【发布时间】:2019-06-04 04:15:24
【问题描述】:

我想获取当前月份的每个日期记录并将每个日期与 created_at 列进行比较。如果记录可用于特定日期,则显示这些记录。我有 StartDate 和 EndDate 并且我想显示每天的记录与每天的日期进行比较,然后如果记录可用,则显示。怎么做。我尝试了一些查询。但是,它不起作用..

//Display TAT Reports
public function reports() {

//Each date from current month     
for ($i = 1; $i <= date('t'); $i++) 
{
 $dates[] = date('Y') . "-" . date('m') . "-" . str_pad($i, 2, '0',STR_PAD_LEFT);
 }
$now = Carbon::now();
$monthStartDate = $now->startOfMonth()->format('Y-m-d'); //start date of month
$monthendDate = $now->endOfMonth()->format('Y-m-d'); //enddate of month

$recordsOnMonthlyBasis = DB::table('pickups')->select('tat', 'completed_at')
                            ->whereNotNull('tat')
                            ->whereDate('completed_at', '>=', "$monthStartDate")
                            ->whereDate('completed_at', '<=', "$monthendDate")->get()->toArray();
}

如果我打印$recordsOnMonthlyBasis,那么它将显示开始日期和结束日期之间的所有记录。但是,我希望每天的记录与数据库中的日期进行比较。

感谢任何帮助。

【问题讨论】:

  • “我希望每天的记录与数据库中的日期进行比较”是什么意思你能举例说明一下吗?
  • @Raka 当然。比方说。我有 startDate="01/06/2019" 和 endDate="30/06/2019"。在数据库表中,我有 05/06/2019、07/06/2019、23/06/2019 和其他日期的记录。因此,我需要比较开始日期和结束日期之间的日期,以便获得 05、07、23 等的记录。
  • 您的开始日期不是 01/06/2019,是吗?希望您的开始日期为“2019-06-01”!顺便说一句,如果这是 MySQL,请标记它,并查看 meta.stackoverflow.com/questions/333952/…
  • @Strawberry 老兄我有开始日期和结束日期.. 请检查我是否使用了 startOfMonth()
  • 我建议您提供样本数据和相应的期望结果(一如既往)

标签: php sql database laravel


【解决方案1】:

更改查询。

$now = Carbon::now();
$monthStartDate = $now->startOfMonth()->format('Y-m-d'); //start date of month
$monthendDate = $now->endOfMonth()->format('Y-m-d'); //enddate of month

$recordsOnMonthlyBasis = DB::table('pickups')->select('tat', 'completed_at')
                        ->whereNotNull('tat')
                        ->whereBetween('completed_at',[$monthStartDate,$monthendDate])
                        ->get()->toArray();

【讨论】:

    【解决方案2】:

    您可以添加此查询以获取每日记录。

     DB::table('pickups')->where(DB::raw("(DATE_FORMAT(completed_at,'%Y-%m-%d'))"), '=', Carbon::today()->format('Y-m-d'));
    

    【讨论】:

    • 感谢重播。但是,这将比较当天。
    【解决方案3】:

    试试这个,

    $fromDate1 = \Carbon\Carbon::parse($fromDate);
    $toDate1 = \Carbon\Carbon::parse($toDate);
    
    for ($fromDate1; $fromDate1 <= $toDate1; $fromDate1->addDays(1)) {
        // Your code 
    }
    

    获取您的from date 并循环到end date 并在每次迭代中添加一天。

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 2020-05-22
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多