Heim  >  Fragen und Antworten  >  Hauptteil

Verbessern Sie Datumsberechnungen mit dem AND-Operator

Ich bin mir sicher, dass das eine einfache Lösung ist, aber ich kann sie nirgends finden. Ich versuche, AND zu verwenden, um die Ergebnisse einer Abfrage zu beeinflussen. Die Abfrage lautet wie folgt.

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

Die erste Abfrage funktioniert also einwandfrei. Es werden mir nur Zeilen angezeigt, in denen das Anmeldedatum kleiner als das Öffnungsdatum ist, und dann die Gesamtdifferenz in Tagen zwischen den beiden, was großartig ist. Allerdings möchte ich der Abfrage AND hinzufügen, um bestimmte Summen auszuschließen. Zum Beispiel das folgende Beispiel:

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;

Das Problem ist, dass die Alias-Spalte date_diff nicht als echte Spalte erkannt wird und ich daher eine Fehlermeldung erhalte. Ich habe versucht, HAVING anstelle von AND zu verwenden, aber das funktioniert nicht (nicht das, was ich dachte). Grundsätzlich möchte ich Zeilen mit Nullen ausschließen. Weiß jemand, was ich anstelle von „and date_diff > 1“ verwenden würde?

P粉554842091P粉554842091211 Tage vor307

Antworte allen(1)Ich werde antworten

  • P粉308089080

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

    重复 where 子句中的表达式(即使用 datediff(log_in, date_opened) > 1 而不是 date_diff > 1),或者使用派生表,然后在封闭的查询中添加条件。

    使用派生表的示例:

    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
    

    Antwort
    0
  • StornierenAntwort