ここには 2 つの問題があります。
- where 句で列のエイリアスを参照することはできません。代わりに、where 句で計算を繰り返す必要があります。
- 関数を使用して
TIME()
、データ時間の時間部分を抽出します
これら 2 つの問題に対処すると、次のことが得られます。
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'
オプションとして、select で time 値が実際に必要ない場合は、それを削除して where 句に含めることができます。また、それがHOUR()
より適している場合は、関数を使用できます。これら 2 つの変更により、クエリは次のように簡素化されます。
select *
FROM vbsk_dk_02.fab_master_flyvedata
where HOUR(f.start_tid) between 12 and 18
これはずっときれいです:)