0
votes

J'ai commencé et endormi du mois en cours. Je souhaite comparer les enregistrements de base de données de chaque date qui se trouvent entre ces deux dates

Je veux obtenir des enregistrements totaux du mois en cours et comparer chaque date avec la colonne créée_at. Si des enregistrements disponibles pour une date donnée, affichez ces enregistrements. J'ai commencé et endormi et je souhaite afficher des enregistrements de chaque jour comparer à la date de chaque jour, puis si les enregistrements sont disponibles, puis affichez. Comment faire ça. J'ai essayé avec une question. Mais, il ne fonctionne pas.

//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();
}


6 commentaires

Qu'entendez-vous par "Je veux des enregistrements de chaque jour de comparer avec la date à DB" Pouvez-vous préciser avec un exemple.


@Raka sûr. Disons. J'ai commencé = "01/06/2019" et enddate = "30/06/2019". Dans la table de base de données, j'ai des enregistrements pour le 05/06/2019, 07/06 / 2019,23/06/2019 et tant pour d'autres dates. Donc, j'ai besoin de comparer les dates situées entre la date de début et la fin de manière à pouvoir obtenir les enregistrements de 05,07,23 et ainsi de suite.


Vous n'avez pas vraiment de date de début du 01/06/2019, n'est-ce pas? On espère que vous passerez une date de début de '2019-06-01' !! Incidemment, s'il s'agit de MySQL, étiquetez-le comme tel, et voir meta.stackoverflow.com/questions/333952/...


@Strawberry mec j'ai Date de début et date de fin. Veuillez vérifier que j'ai utilisé startofminth ()


Je vous suggère de fournir des données d'échantillons et un résultat souhaité correspondant (comme toujours)


@Strowberry: - Si j'imprime cette requête: - $ mois de mecartdate = $ maintenant-> startofminth () -> format ('y-m-d'); // Date de début du mois, alors je reçois "2019-06-01" de même, je me retrouve aussi.


3 Réponses :


0
votes

Vous pouvez ajouter cette requête pour obtenir des enregistrements quotidiens.

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


1 commentaires

Merci de répondre. Mais cela comparera la journée en cours.



0
votes

changer la requête.

$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();


0 commentaires

0
votes

Essayez avec cela,

$fromDate1 = \Carbon\Carbon::parse($fromDate);
$toDate1 = \Carbon\Carbon::parse($toDate);

for ($fromDate1; $fromDate1 <= $toDate1; $fromDate1->addDays(1)) {
    // Your code 
}


0 commentaires