Datetime równe lub większe niż dzisiaj w MySQL

Jak najlepiej postępować:

SELECT * FROM users WHERE created >= today;

Uwaga: created jest polem datetime.

Author: Matt, 2011-03-03

10 answers

SELECT * FROM users WHERE created >= CURDATE();

Ale chyba masz na myśli created < today

 355
Author: Clodoaldo Neto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-25 16:14:00
SELECT * FROM myTable WHERE  DATE(myDate) = DATE(NOW())

Czytaj więcej: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html

 78
Author: Edmhs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-03 14:52:50
SELECT * FROM users WHERE created >= NOW();

Jeśli kolumna jest typu datetime.

 35
Author: Shakti Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-03 14:52:14

Jeśli 'created' to typ datetime

SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);

CURDATE () oznacza również '2013-05-09 00:00:00'

 16
Author: bart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-09 08:29:09

Odpowiedź oznaczona jest myląca. Postawione pytanie brzmi DateTime, ale stwierdziło, że potrzebne było tylko CURDATE().

Najkrótsza i prawidłowa odpowiedź to:

SELECT * FROM users WHERE created >= CURRENT_TIMESTAMP;
 13
Author: JeffMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-14 03:10:59

Jeśli kolumna ma indeks, a na kolumnie jest zastosowana funkcja, indeks nie działa i następuje pełne skanowanie tabeli, powodując bardzo powolne zapytanie.

Złe Zapytanie; to zignoruje indeks w kolumnie date_time

select * from users
where Date(date_time) > '2010-10-10'

Aby wykorzystać indeks na kolumnie utworzonej Typu datetime w porównaniu z dzisiejszą/bieżącą datą, można zastosować następującą metodę.

Rozwiązanie dla OP:

select * from users
where created > CONCAT(CURDATE(), ' 23:59:59')

Próbka do pobrania danych na dziś:

select * from users
where 
    created >= CONCAT(CURDATE(), ' 00:00:00') AND
    created <= CONCAT(CURDATE(), ' 23:59:59')

Lub użyć pomiędzy Dla short

select * from users 
where created BETWEEN 
      CONCAT(CURDATE(), ' 00:00:00') AND CONCAT(CURDATE(), ' 23:59:59')

Wskazówka: Jeśli musisz wykonać wiele obliczeń lub zapytań dotyczących dat, a także czasu, bardzo przydatne jest zapisanie daty i czasu w oddzielnych kolumnach. (Divide & Conquer)

 8
Author: Bsienn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-06 12:01:27
SELECT * FROM users WHERE created >= now()
 2
Author: Silx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-02 15:25:17

Poniższy kod zadziałał dla mnie.

declare @Today date

Set @Today=getdate() --date will equal today    

Select *

FROM table_name
WHERE created <= @Today
 0
Author: Rob Fahndrich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-20 12:50:17
SELECT * FROM table_name WHERE CONCAT( SUBSTRING(json_date, 11, 4 ) ,  '-', SUBSTRING( json_date, 7, 2 ) ,  '-', SUBSTRING(json_date, 3, 2 ) ) >= NOW();

Json_date ["05/11/2011"]

 -1
Author: vpgodara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-18 10:32:39

Możesz zwrócić wszystkie wiersze i użyć funkcji PHP datediff wewnątrz instrukcji if, chociaż spowoduje to dodatkowe obciążenie serwera.

if(dateDiff(date("Y/m/d"), $row['date']) <=0 ){    
}else{    
echo " info here";    
}
 -5
Author: Koney L Visinko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-09 07:11:25