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

MySQL - BETWEEN nevybere správné výsledky

Viz související otázka.

Jak již uvedli jiní, vaším primárním problémem není účtování času. Několik možností, jak to zvládnout:

  1. Použijte funkci pro převod DateTime na Datum. Tuto možnost nedoporučuji, protože pravděpodobně způsobí, že funkce nesmí se pohybovat .

  2. Rozbalte BETWEEN explicitně zahrnout poslední okamžik dne:(poznámka:toto je poslední možná hodnota, kterou může MS SQL uložit, nevím, jestli má MySQL stejnou hodnotu)

    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
    
  3. Použijte < pro horní hodnotu

    SELECT * FROM `punches` WHERE `date` >= '08/20/11' AND `date` < '09/01/11'
    

Vlastně si myslím, že ten poslední je ve většině situací jednodušší.

Předpokládám, že byste mohli dělat i jiné věci, například změnit datový typ sloupce, ale zde jsem předpokládal, že vás zajímá pouze změna dotazu.

** Prohlášení:Jsem typ MS SQL, ne MySQL



  1. CodeIgniter Active Record vložení z jedné tabulky do druhé

  2. Vnořené třídy - CustomRowMapper !! Už to není problém!! - Část 2

  3. Vypočítejte rozdíl mezi dvěma daty a časy

  4. Jak provádět průběžné upgrady pro MySQL