Sie haben hier zwei Probleme:
- Sie können in der where-Klausel nicht auf Spaltenaliase verweisen. Stattdessen müssen Sie Ihre Berechnung in der where-Klausel wiederholen
- 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 :)