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

Améliorez les calculs de date à l'aide de l'opérateur AND

Je suis sûr que c'est une solution facile, mais je ne la trouve nulle part. J'essaie d'utiliser AND pour influencer les résultats d'une requête. La requête est la suivante.

select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
from table1
where log_in < date_opened;

La première requête fonctionne donc correctement. Cela ne me donne que les lignes où la date de connexion est inférieure à date_opened, puis la différence totale de jours entre les deux, ce qui est génial. Cependant, je souhaite ajouter AND à la requête pour exclure certains totaux. Par exemple, l'exemple suivant :

select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
from table1
where log_in < date_opened and date_diff > 1;

Le problème est que la colonne alias date_diff n'est pas reconnue comme une vraie colonne, je reçois donc un message d'erreur. J'ai essayé d'utiliser HAVING au lieu de AND, mais cela ne fonctionne pas (ce n'est pas ce que je pensais). Je veux essentiellement exclure les lignes avec des zéros. Est-ce que quelqu'un sait ce que j'utiliserais à la place de « and date_diff > 1 » ?

P粉554842091P粉554842091211 Il y a quelques jours304

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

  • P粉308089080

    P粉3080890802024-03-23 10:52:05

    Répétez l'expression dans la clause Where (c'est-à-dire utilisez datediff(log_in, date_opened) > 1 而不是 date_diff > 1) ou utilisez une table dérivée, puis ajoutez la condition dans la requête englobante.

    Exemple d'utilisation d'une table dérivée :

    select first_name, log_in, date_opened, date_diff
    from (
        select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
        from table1
        where log_in < date_opened
    )
    where date_diff > 1
    

    répondre
    0
  • Annulerrépondre