Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez les enregistrements par heure dans un intervalle entre 12:00:00 et 18:00:00 chaque jour

Vous avez deux problèmes ici :

  1. 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
  2. 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 :)