it-roy-ru.com

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

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

  SELECT * FROM table WHERE date=????
14
AJ OP

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

21
Sergey Kudriavtsev

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

SELECT * FROM table WHERE date > CURDATE();

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

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

26
Kaivosukeltaja
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
3
Bryan

Функция 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
michael667
SET @day = '2017-12-12' ;

SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
1
Fredy

Попробуй это

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

my_date -> column name
1
vivek

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

select * from Table t where t.column>=Date() and t.column< Date() + 1
0
Selman Akdemir