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

Použití MySql mezi klauzulí s daty

Fabio ve skutečnosti nemá pravdu, pokud to budou zahrnuty hodiny, minuty a sekundy

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

se stane interně

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

Takže vlastně jen vyberete 1 sekundu 6. 6. 2013, ne celý den!

To samé s BETWEEN samozřejmě. Chcete-li získat celý den 2013-06-06, musíte napsat

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

nebo

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

Neváhejte a vyzkoušejte si to sami (nebo to uvidíte naživo v 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. Jak bezpečné je ověřování v protokolu mysql?

  2. rozdíl mezi časovým razítkem Jquery a časovým razítkem php?

  3. Jak se mezi dvěma tabulkami VYBERE tabulku, kde existuje id konkrétní hodnoty mysql

  4. Jaký je rozdíl mezi odstraněním z tabulky table_a a zkrácením tabulky table_a v MySQL?