recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment vérifier si une date est dans le futur, pour des colonnes de date et d'heure distinctes ?

<p>J'ai deux colonnes pour stocker les dates : l'une est la date elle-même au format AAAA-mm-jj et l'autre est l'heure dans le type de données time(7), par exemple 11:15:10.0000000. <br /><br />Comment puis-je vérifier les lignes futures ? <br /><br />Je peux obtenir la première partie, la date elle-même : </p><p><br /></p> <pre class="brush:php;toolbar:false;">MonModèle::where('date', '>=', Carbon::today())->get()</pre> <p>Mais quand j'essaye d'ajouter l'heure, ça ne marche pas : </p> <pre class="brush:php;toolbar:false;">MonModèle::where('date', '>=', Carbon::today())->where('time', '> ;', Carbon::now()->format('H:i'))->get()</pre> <p>Comme ils sont séparés, même si la date est dans le futur, l'heure est différente, il peut donc y avoir une incompatibilité horaire. Je dois donc fusionner d’une manière ou d’une autre la date et l’heure qui y sont associées, et non séparément. </p>
P粉021854777P粉021854777512 Il y a quelques jours556

répondre à tous(1)je répondrai

  • P粉651109397

    P粉6511093972023-08-01 16:21:09

    Essayez de combiner deux colonnes en une seule condition.

    $now = Carbon::now();
    
    MyModel::whereRaw("CONCAT(`date`, ' ', `time`) >= ?", [$now->toDateTimeString()])->get();

    Pour SQL Server, essayez ce qui suit.

    MyModel::whereRaw("CONVERT(datetime, date + ' ' + CONVERT(varchar, time, 121)) >= ?", [$now->toDateTimeString()])->get();

    La transformation des requêtes peut nécessiter une mise à jour, veuillez consulter la documentation pour plus d'informations.

    répondre
    0
  • Annulerrépondre