Запрос выбора между датами unix timestamp и форматами даты - PullRequest
0 голосов
/ 14 февраля 2012

Я пытаюсь выбрать все даты между 2 датами.В базе данных у меня есть записи в формате отметки времени unix, в то время как мои переменные date_ini и date_final имеют формат даты (00-00-00 00:00:00)

    $msgs = mysql_query("SELECT date_time, from_user_name, message 
                         FROM message_log
                         WHERE date_time BETWEEN '$log_ini' AND '$log_fim' 
                         AND (from_user_name = '$usuario' OR from_user_name = '$atendente')")or die(mysql_error());

Это просто возвращает ноль.Я уверен, что есть записи, которые соответствуют выбору.Я также проверил date_default_timezone_set и установил его в то же время на сервере.Я знаю, что это глупо, но я очень расстроен!Уже много часов я пробую все, функция FROM_UNIXTIME, операторы no coman, coman, <>, strotime в переменных раньше, и ничего не работает ... Может кто-то указать, в чем ошибка?Большое спасибо!

РЕДАКТИРОВАТЬ:

У меня проблема, это поля date_time, которые на самом деле не совсем unixtimestamp, а время unix + 3 цифры.Извините, была моя ошибка, и ответ был хорошим.Я открываю другой вопрос, чтобы теперь найти, как бороться с этим полем в этой форме.Большое спасибо!

1 Ответ

1 голос
/ 14 февраля 2012

Хорошо, ваше поле date_time - unix_timestamp? Это просто целое число, и вы заставляете MySQL выполнять операцию «между» над этим - MySQL не имеет собственного формата «unix timestamp», это просто удобная функция для преобразования целого числа <-> datetime

Чтобы сработало предложение where, вам нужно

WHERE FROM_UNIXTIME(date_time) BETWEEN '...' AND '...'
... or ...
WHERE date_time BETWEEN UNIX_TIMESTAMP(...) AND UNIX_TIMESTAMP(...)

так что вы правильно сравниваете яблоки с яблоками, а не яблоки с апельсинами.

...