Ответы:
SELECT * FROM users WHERE created >= CURDATE();
Но я думаю, что вы имеете в виду created < today
SELECT * FROM myTable WHERE DATE(myDate) = DATE(NOW())
Узнайте больше: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html
SELECT * FROM users WHERE created >= NOW();
если столбец имеет тип datetime.
Если «создан» является типом даты и времени
SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
CURDATE () также означает «2013-05-09 00:00:00»
Если у столбца есть индекс, и к столбцу применяется функция, то индекс не работает и происходит полное сканирование таблицы, что вызывает очень медленный запрос.
Для того, чтобы использовать индекс и сравнить даты и время с сегодня / текущей датой, то можно использовать следующий.
Решение для ОП:
select * from users
where created > CONCAT(CURDATE(), ' 23:59:59')
Пример для получения данных за сегодня:
select * from users
where
created >= CONCAT(CURDATE(), ' 00:00:00') AND
created <= CONCAT(CURDATE(), ' 23:59:59')
Или используйте МЕЖДУ для краткости
select * from users
where created BETWEEN
CONCAT(CURDATE(), ' 00:00:00') AND CONCAT(CURDATE(), ' 23:59:59')
Код ниже работал для меня.
declare @Today date
Set @Today=getdate() --date will equal today
Select *
FROM table_name
WHERE created <= @Today
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"]
Вы можете вернуть все строки, а затем использовать функцию php datediff внутри оператора if, хотя это приведет к дополнительной нагрузке на сервер.
if(dateDiff(date("Y/m/d"), $row['date']) <=0 ){
}else{
echo " info here";
}
CURDATE()
вернуть только дату, а не время