Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie MySql pomiędzy klauzulą ​​z datami

Fabio właściwie nie ma racji, jeśli wliczone zostaną godziny, minuty i sekundy

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

staje się wewnętrznie

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

Tak naprawdę wybierasz tylko 1 sekundę z 06.06.2013, nie cały dzień!

Tak samo oczywiście z BETWEEN. Aby uzyskać cały dzień 2013-06-06, trzeba by napisać

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

lub

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

Śmiało, wypróbuj sam (lub zobacz na żywo w 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mylący schemat bazy danych (indeks i ograniczenia)

  2. Pamięć podręczna/ponowne użycie podzapytania w MySQL

  3. MySQL konwertuje dane wyjściowe w formacie timediff na dzień, godzinę, minutę i drugi format

  4. dodanie unikalnego do istniejącego klucza obcego

  5. Jak wyszukiwać dane JSON w MySQL?