Подтвердить что ты не робот

Сравнение дат в MySQL, игнорирующих временную часть поля DateTime

Мне нужно сравнить даты в MySQL, игнорируя временную часть в столбце DateTime. Я пробовал следующий SQL.

SELECT * FROM order_table where order_date=date_format('2012-05-03', '%Y-%m-%d');

Он не извлекает ни одной строки, даже если в таблице MySQL есть дата 2012-05-03 10:16:46. Как можно игнорировать временную часть в поле DateTime при сравнении дат в MySQL?

4b9b3361

Ответ 1

Вы можете использовать функцию DATE:

SELECT col1, col2, ..., coln
FROM order_table
WHERE date(order_date) = '2012-05-03'

Но это более эффективно, если ваша таблица большая и у вас есть индекс на order date:

SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= '2012-05-03'
AND order_date < '2012-05-04'

Ответ 2

Если вы хотите передать дату, вы можете попробовать что-то вроде этого:

where YEAR(order_date)='2012' AND MONTH(order_date)='05' AND DAY(order_date)='03'

Вы можете посмотреть этот для получения дополнительных функций.

Ответ 3

SELECT * FROM order_table WHERE date(order_date) = '2012-05-03';

Ответ 4

Возможно, вы можете использовать функцию типа date(). Но в этом случае скорость может быть уменьшена, потому что индекс не может использоваться. Поэтому я рекомендую использовать

SELECT * FROM order_table 
WHERE order_date between('2012-05-03 0:0:0' and '2012-05-03 23:59:59')

Ответ 5

@Mark имеет хороший подход, но просто будьте осторожны, что вам всегда придется рассчитывать и находить следующий день в этом случае. Если вы хотите избежать этого и все еще игнорировать время, вы можете сделать следующее:

WHERE order_date >= '2012-05-27 00:00:00' AND order_date <= '2012-05-27 23:59:59'

Надеюсь, это имеет смысл.

Ответ 6

Это бит старый.... но правильный ответ также использует date_format в столбце order_date, как показано ниже:

SELECT * FROM order_table where date_format(order_date, '%Y-%m-%d')='2012-05-03';

Ответ 7

при сравнении дат в MySQL можно использовать одно из следующих:

DATEDIFF() Subtract two dates
TIMEDIFF() Subtract time
TIMESTAMPDIFF() Subtract an interval from a datetime expression
PERIOD_DIFF()   Return the number of months between periods

для более подробной информации о функциях MySQL .