MySQL Как ВЫБРАТЬ данные из таблицы, которая записана сегодня?
Используйте PHP и MySQL. В моей таблице есть поле даты (datetime), записанное функцией sql NOW(). Примером значения данных в этом поле является 2010-10-07 10:57:36. Как я могу ВЫБРАТЬ все данные, какой день-месяц-год сегодня. Я пытаюсь использовать код, как показано ниже:
SELECT * FROM table WHERE date=????
8 answers
SELECT * FROM table where DATE(date)=CURDATE()
Попробуйте это:
SELECT * FROM table WHERE date > CURDATE();
CURDATE()
вернет текущую дату в виде 2011-10-07
, которая будет преобразована в 2011-10-07 00:00:00
при сравнении datetime
с ней.
Обратите внимание, что если вы используете DATE(date) = CURDATE()
, вы будете выполнять преобразование даты для каждой строки в таблице, что будет очень плохо для вашей производительности, если у вас много строк и/или вам нужно часто запускать запрос. Также убедитесь, что у вас есть индекс date
, иначе оба метода будут еще медленнее.
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
Функция date_format
позволяет легко переключаться между различными уровнями детализации:
Выберите все, начиная с того же дня:
select * from table
where date_format(date, '%Y-%m-%d') = date_format(now(), '%Y-%m-%d');
С того же месяца:
select * from table
where date_format(date, '%Y-%m') = date_format(now(), '%Y-%m');
Из того же года:
select * from table
where date_format(date, '%Y') = date_format(now(), '%Y');
С того же часа:
select * from table
where date_format(date, '%Y-%m-%d %H') = date_format(now(), '%Y-%m-%d %H');
И так далее.
Попробуйте это
SELECT * FROM table WHERE DATE(my_date)=DATE(now())
my_date -> column name
SET @day = '2017-12-12' ;
SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
Используйте что-то вроде этого, это точно работает с моим кодом (база данных доступа):
select * from Table t where t.column>=Date() and t.column< Date() + 1
Используйте между.
select * from table date between '2010-10-06' and '2010-10-08';