sql >> Base de Datos >  >> RDS >> Mysql

Seleccionar registros por tiempo en intervalo entre las 12:00:00 y las 18:00:00 todos los días

Tienes dos problemas aquí:

  1. No puede hacer referencia a alias de columna en la cláusula where. En su lugar, debe repetir su cálculo en la cláusula where
  2. Utilice el TIME() función para extraer la parte de tiempo del datatime

Con esos dos problemas resueltos, obtienes:

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'

Como opción, si en realidad no necesita el valor de tiempo en la selección, puede eliminarlo y simplemente tenerlo en la cláusula where. Además, puede usar HOUR() función si eso se adapta mejor. Con esos dos cambios, su consulta se simplificaría a:

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

que es mucho más ordenado :)