Vous avez deux problèmes ici :
- Vous ne pouvez pas faire référence à des alias de colonne dans la clause where. Au lieu de cela, vous devez répéter votre calcul dans la clause where
- Utilisez le
TIME()
fonction pour extraire la partie heure du datatime
Une fois ces deux problèmes résolus, vous obtenez :
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'
En option, si vous n'avez pas réellement besoin de la valeur de temps dans la sélection, vous pouvez la supprimer et l'avoir simplement dans la clause where. Vous pouvez également utiliser le HOUR()
fonction si cela convient mieux. Avec ces deux modifications, votre requête serait simplifiée :
select *
FROM vbsk_dk_02.fab_master_flyvedata
where HOUR(f.start_tid) between 12 and 18
qui est beaucoup plus propre :)