sql >> Databáze >  >> RDS >> Mysql

Vyberte záznamy podle času v intervalu mezi 12:00:00 a 18:00:00 každý den

Máte zde dva problémy:

  1. V klauzuli where nelze odkazovat na aliasy sloupců. Místo toho musíte svůj výpočet zopakovat v klauzuli where
  2. Použijte TIME() funkce pro extrakci časové části datatime

Po vyřešení těchto dvou problémů získáte:

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'

Volitelně, pokud ve skutečnosti nepotřebujete hodnotu času v selectu, můžete ji odstranit a mít ji jen v klauzuli where. Můžete také použít HOUR() funkce, pokud to lépe vyhovuje. S těmito dvěma změnami by se váš dotaz zjednodušil na:

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

což je mnohem úhlednější :)



  1. Příznaky nad hlavou pozorovatele a typu čekání

  2. Používaná verze SQL Serveru nepodporuje datový typ datetime2?

  3. SQL dotaz pro získání hodnot sloupců, které odpovídají MAX hodnotě jiného sloupce?

  4. MySQL – jak dlouho vytvořit index?