2014-02-20 4 views
0

У меня есть поле в моей таблице с именем created_at, которое является меткой времени. Я пытаюсь написать запрос, где будут даны данные, где дата в метке времени - текущая дата.mySQL, сравнивая временную метку с текущей датой

$result = mysql_query("SELECT *FROM visitors WHERE DATE(FROM_UNIXTIME(created_at)) = 
CURDATE()") or die(mysql_error()); 

Я посмотрел, как получить дату с отметкой времени, поэтому я использую DATE (FROM_UNIXTIME (created_at)). Мой запрос возвращается с ничем не найденным, но у меня есть поля created_at в моем db, которые являются сегодняшней датой. Что я делаю не так?

+0

Вопрос верный, должна быть какая-то другая причина, по которой записи не найдены. – pilsetnieks

+0

Я подозреваю, что это не unimxtimestamp –

+0

@Dagon, что вы имеете в виду? – Aaron

ответ

1

Тип данных временной отметки включает секунды, поэтому времена никогда не будут совпадать. Вы должны обрезать секунды как с меткой «created_at», так и с текущей датой/временем (сейчас()) перед сравнением, чтобы у вас была возможность сопоставить только части даты. Пример:

select * from visitors where DATE_FORMAT(created_at,'%Y%c%d')=DATE_FORMAT(now(),'%Y%c%d') 
+0

Что делает функция mysql DATE()? –

+0

Функция Date должна обрезать информацию о дате без даты с отметки времени – Aaron

+0

Затем выберите дату (created_at), дату (now(), date (FROM_UNIXTIME (created_at)) от посетителей и визуально сравните столбцы, чтобы увидеть, как они отличаются . Обобщите предложение where в синтаксисе, который дает одинаковые столбцы. –

Смежные вопросы