Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz rekordy według czasu w przedziale od 12:00:00 do 18:00:00 każdego dnia

Masz tutaj dwa problemy:

  1. Nie możesz odwoływać się do aliasów kolumn w klauzuli WHERE. Zamiast tego musisz powtórzyć obliczenia w klauzuli WHERE
  2. Użyj TIME() funkcja wyodrębniania części czasu z czasu danych

Po rozwiązaniu tych dwóch problemów otrzymujesz:

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'

Opcjonalnie, jeśli faktycznie nie potrzebujesz wartości czasu w zaznaczeniu, możesz ją usunąć i po prostu umieścić w klauzuli WHERE. Możesz także użyć HOUR() funkcjonować, jeśli to lepiej. Po wprowadzeniu tych dwóch zmian zapytanie uprościłoby się do:

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

co jest o wiele ładniejsze :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy zwracasz DOKŁADNE dopasowania z wyszukiwania pełnotekstowego?

  2. UTWÓRZ TYP na MySQL

  3. Jak używać indeksów do poprawy wydajności zapytań MySQL

  4. wybierz jedną z dwóch tabel, w których połączona kolumna może mieć wartość pustą

  5. Spring data JPA tylko jeden klucz złożony to problem z automatyczną inkrementacją