sql >> Database >  >> RDS >> Mysql

MySql gebruiken tussen clausule met datums

Fabio heeft eigenlijk geen gelijk, als er uren, minuten en seconden bijkomen

where date >= '2013-06-01' and date <= '2013-06-06'

wordt intern

where date >= '2013-06-01 00:00:00' and date <= '2013-06-06 00:00:00'

Dus je selecteert eigenlijk gewoon 1 seconde van 2013-06-06, niet de hele dag!

Hetzelfde met BETWEEN natuurlijk. Om de hele dag van 2013-06-06 te krijgen, zou je moeten schrijven

where date >= '2013-06-01' and date <= '2013-06-06 23:59:59'

of

where date BETWEEN '2013-06-01' AND '2013-06-06 23:59:59'

Ga je gang, probeer het zelf (of bekijk het live in een sqlfiddle ):

create table foo (my_date date, my_timestamp timestamp, my_datetime datetime);
insert into foo values ('2013-06-06', '2013-06-06 12:23:34', '2013-06-06 13:35:48');

select * from foo
where
my_date <= '2013-06-06'; /*returns row*/

select * from foo
where
my_timestamp <= '2013-06-06'; /*does NOT return row*/

select * from foo
where
my_datetime <= '2013-06-06'; /*does NOT return row*/

select * from foo
where
my_timestamp <= '2013-06-06 23:59:59';  /*returns row*/

select * from foo
where
my_datetime <= '2013-06-06 23:59:59';  /*returns row*/


  1. Kan de web2py-planner niet uitvoeren met de postgresql-database

  2. Hoe ORA-01775 te debuggen:een reeks synoniemen in een lus?

  3. Hoe beheer ik het snuiven van parameters en/of query-hints in het entiteitsraamwerk?

  4. PDO/MySQL-geheugenverbruik met grote resultatenset