sql >> Databasteknik >  >> RDS >> Mysql

Välj poster efter tid i intervall mellan 12:00:00 och 18:00:00 varje dag

Du har två problem här:

  1. Du kan inte referera till kolumnalias i where-satsen. Istället måste du upprepa din beräkning i where-satsen
  2. Använd TIME() funktion för att extrahera tidsdelen av datatiden

Med dessa två frågor åtgärdade får du:

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'

Som ett alternativ, om du faktiskt inte behöver tidsvärdet i select, kan du ta bort det och bara ha det i where-satsen. Du kan också använda HOUR() fungerar om det passar bättre. Med dessa två ändringar skulle din fråga förenklas till:

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

vilket är mycket snyggare :)



  1. Flera uppsättningar och where-satser i Update-fråga i mysql

  2. MIN() Funktion i MariaDB

  3. SQL Server Parallell Backup Restore -1

  4. Dynamisk uppdateringssats med variabla kolumnnamn