Какой лучший способ сделать следующее:
SELECT * FROM users WHERE created >= today;
Примечание: created - это поле datetime.
Какой лучший способ сделать следующее:
SELECT * FROM users WHERE created >= today;
Примечание: created - это поле datetime.
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.
Если "created" - это тип datetime
SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
CURDATE() означает также '2013-05-09 00:00:00'
Отмеченный ответ вводит в заблуждение. Был задан вопрос DateTime
, но указано, что нужно было просто CURDATE()
.
Самый короткий и правильный ответ на это:
SELECT * FROM users WHERE created >= CURRENT_TIMESTAMP;
SELECT * FROM users WHERE created >= now()
Если у столбца есть индекс, и к столбцу применяется функция, то индекс не работает и происходит полное сканирование таблицы, что вызывает очень медленный запрос.
Чтобы использовать индекс и сравнить datetime с сегодняшней/текущей датой, можно использовать следующее.
Решение для ОП:
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 датированный внутри оператора if, хотя это добавит дополнительную нагрузку на сервер.
if(dateDiff(date("Y/m/d"), $row['date']) <=0 ){
}else{
echo " info here";
}