2011-12-29 2 views
3

У меня есть функция, которая помещает значения метки времени (ГГГГ-ММ-ДД ЧЧ: ММ: СС) в столбец META_VALUE таблицы META.Сравнение значений даты CURDATE() с полем полной метки времени

Что я хочу сделать, это сравнить, соответствует ли эта дата (ГГГГ-ММ-ДД) META_VALUE сегодняшним (CURDATE()), не считая часа, минуты и секунды (ЧЧ: ММ: СС) ,

Как это сделать?

ответ

5
SELECT * FROM table WHERE <timestamp-field> BETWEEN 'YYYY-MM-DD 00:00:00' AND 'YYYY-MM-DD 23:59:59' 

Allways не делать расчеты на поле, если это возможно: например,

SELECT * FROM table WHERE DATE(<timestamp-field>) = 'YYYY-MM-DD' 

рассчитает DATE() для всех строк в этой таблице, так что вы на самом деле говорить впустую циклам здесь

+0

или 'WHERE <метки поля>> = 'YYYY-MM-DD' И <метка время -field><'YYYY-MM-DD' + INTERVAL 1 DAY' –

+0

Я решил, что мне, возможно, придется позвонить BETWEEN, но где я могу указать, какую точную дату я ищу? Я хочу, чтобы дата была сегодня и, конечно же, всегда была бы другой ценностью, в зависимости от дня – Murphy1976

+0

Если вы хотите использовать текущую дату, используйте date_sub (date_sub (date_sub (now(), INTERVAL hour (now()) HOUR), INTERVAL минута (сейчас()) MINUTE), INTERVAL second (now()) SECOND) для начала и даты_sub (date_sub (date_sub (now(), INTERVAL hour (now()) - 24 HOUR), INTERVAL минута (теперь()) MINUTE), INTERVAL second (now()) + 1 SECOND) для конца или TIMESTAMP (CURDATE()) для начала и DATE_ADD (TIMESTAMP (CURDATE()), INTERVAL 86399 SECOND) на конец –

1

Просто используйте DATE:

SELECT * FROM table WHERE DATE(timestamp) = '2011-12-29'