Сравнение дат в 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?
Ответы
Ответ 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 .