MySQL Как ВЫБРАТЬ данные из таблицы, которая записана сегодня?


Используйте PHP и MySQL. В моей таблице есть поле даты (datetime), записанное функцией sql NOW(). Примером значения данных в этом поле является 2010-10-07 10:57:36. Как я могу ВЫБРАТЬ все данные, какой день-месяц-год сегодня. Я пытаюсь использовать код, как показано ниже:

  SELECT * FROM table WHERE date=????
Author: Pradeep Kumar Prabaharan, 2011-10-07

8 answers

SELECT * FROM table where DATE(date)=CURDATE()

 18
Author: Sergey Kudriavtsev, 2011-10-07 05:19:13

Попробуйте это:

SELECT * FROM table WHERE date > CURDATE();

CURDATE() вернет текущую дату в виде 2011-10-07, которая будет преобразована в 2011-10-07 00:00:00 при сравнении datetimeс ней.

Обратите внимание, что если вы используете DATE(date) = CURDATE(), вы будете выполнять преобразование даты для каждой строки в таблице, что будет очень плохо для вашей производительности, если у вас много строк и/или вам нужно часто запускать запрос. Также убедитесь, что у вас есть индекс date, иначе оба метода будут еще медленнее.

 26
Author: Kaivosukeltaja, 2015-05-12 10:55:10
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
 3
Author: Bryan, 2011-10-07 05:22:50

Функция 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');

И так далее.

 2
Author: michael667, 2011-10-07 05:25:03

Попробуйте это

SELECT * FROM table WHERE DATE(my_date)=DATE(now())

my_date -> column name
 1
Author: vivek, 2016-10-04 21:49:06
SET @day = '2017-12-12' ;

SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
 1
Author: Fredy, 2017-12-22 18:12:05

Используйте что-то вроде этого, это точно работает с моим кодом (база данных доступа):

select * from Table t where t.column>=Date() and t.column< Date() + 1
 0
Author: Selman Akdemir, 2017-03-13 21:18:55

Используйте между.

select * from table date between '2010-10-06' and '2010-10-08';
 -2
Author: denolk, 2011-10-07 05:18:09