Bạn có hai vấn đề ở đây:
- Bạn không thể tham chiếu đến bí danh cột trong mệnh đề where. Thay vào đó, bạn phải lặp lại phép tính của mình trong mệnh đề where
- Sử dụng
TIME()
chức năng trích xuất phần thời gian của dữ liệu
Với hai vấn đề đó được giải quyết, bạn nhận được:
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'
Là một tùy chọn, nếu bạn không thực sự cần giá trị thời gian trong vùng chọn, bạn có thể loại bỏ nó và chỉ có nó trong mệnh đề where. Ngoài ra, bạn có thể sử dụng HOUR()
hoạt động nếu phù hợp hơn. Với hai thay đổi đó, truy vấn của bạn sẽ đơn giản hóa thành:
select *
FROM vbsk_dk_02.fab_master_flyvedata
where HOUR(f.start_tid) between 12 and 18
gọn gàng hơn rất nhiều :)