Mysql
 sql >> Database >  >> RDS >> Mysql

Seleziona i record in base all'ora nell'intervallo tra le 12:00:00 e le 18:00:00 di tutti i giorni

Hai due problemi qui:

  1. Non puoi fare riferimento agli alias di colonna nella clausola where. Invece, devi ripetere il calcolo nella clausola where
  2. Usa TIME() funzione per estrarre la parte temporale del datatime

Con questi due problemi risolti, ottieni:

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'

Come opzione, se non hai effettivamente bisogno del valore del tempo nella selezione, puoi rimuoverlo e averlo solo nella clausola where. Inoltre, puoi usare HOUR() funzione se si adatta meglio. Con queste due modifiche, la tua query si semplificherebbe in:

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

che è molto più ordinato :)