Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie Aufzeichnungen nach Zeit im Intervall zwischen 12:00:00 und 18:00:00 an jedem Tag aus

Sie haben hier zwei Probleme:

  1. Sie können in der where-Klausel nicht auf Spaltenaliase verweisen. Stattdessen müssen Sie Ihre Berechnung in der where-Klausel wiederholen
  2. Verwenden Sie die TIME() Funktion zum Extrahieren des Zeitteils der Datenzeit

Wenn diese beiden Probleme behoben sind, erhalten Sie:

select
    f.fly_reg,
    TIME(f.start_tid) AS st,
    f.start_hight 
    FROM vbsk_dk_02.fab_master_flyvedata f 
where TIME(f.start_tid) between '12:00:00' AND '18:00:00'

Wenn Sie den Zeitwert in der Auswahl nicht wirklich benötigen, können Sie ihn optional entfernen und ihn einfach in der where-Klausel haben. Sie können auch HOUR() verwenden funktionieren, wenn das besser passt. Mit diesen beiden Änderungen vereinfacht sich Ihre Abfrage zu:

select *
FROM vbsk_dk_02.fab_master_flyvedata
where HOUR(f.start_tid) between 12 and 18

das ist viel ordentlicher :)