За последние 24 часа нас посетили 50253 программиста и 1689 роботов. Сейчас ищут 1165 программистов ...

помогите подкорректировать запрос

Тема в разделе "MySQL", создана пользователем serj011, 19 ноя 2012.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    суть такая, в таблице поле time_view в формате time()
    в переменной $time_t я выташил дату без времени, тоже самое нудно сделать в запросе
    я так думаю что суть моего запроса верна, а вот орфография хромает) помогите подкорректировать пожалуйста

    $time_t = date('Y-m-d');

    $result_view_today = mysql_query("SELECT COUNT(*) FROM view_anket WHERE id_users_see='$myrow_user[id]' and date(Y-m-d, `time_view`) = '$time_t'");
    $temp_view_today = mysql_fetch_array($result_view_today);
    $posts_view_today = $temp_view_today[0];
     
  2. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    а так

    Код (Text):
    1. <? $time_t = date('Y-m-d');
    2.  
    3. $result_view_today = mysql_query("SELECT COUNT(*) FROM view_anket WHERE id_users_see=$myrow_user[id] and date(Y-m-d, `time_view`) = $time_t");
    4. $temp_view_today = mysql_fetch_array($result_view_today);
    5. $posts_view_today = $temp_view_today[0]; ?>
     
  3. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    и так не получается(
     
  4. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    счас сделаем не парься )
    Код (Text):
    1. <? $time_t = date('Y-m-d');
    2.  
    3. $result_view_today = mysql_query("SELECT COUNT(*) FROM view_anket WHERE id_users_see=".$myrow_user[id]." and date(Y-m-d, `time_view`) = ".$time_t.");
    4. $temp_view_today = mysql_fetch_array($result_view_today);
    5. $posts_view_today = $temp_view_today[0];
    Добавлено спустя 2 минуты 1 секунду:
    Код (Text):
    1. <? $time_t = date('Y-m-d');
    2.  
    3. $result_view_today = mysql_query("SELECT COUNT(*) FROM view_anket WHERE id_users_see=".$myrow_user[id]." and date(Y-m-d, `time_view`) = ".$time_t);
    4. $temp_view_today = mysql_fetch_array($result_view_today);
    5. $posts_view_today = $temp_view_today[0];
    Добавлено спустя 19 секунд:
    Код (Text):
    1. <? $time_t = date('Y-m-d');
    2.  
    3. $result_view_today = mysql_query('SELECT COUNT(*) FROM view_anket WHERE id_users_see='.$myrow_user[id].' and date(Y-m-d, `time_view`) = '.$time_t.');
    4. $temp_view_today = mysql_fetch_array($result_view_today);
    5. $posts_view_today = $temp_view_today[0];
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    date(Y-m-d, `time_view`)

    Что это?
    Попробуй в базе напрямую выполнить запрос.
     
  6. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    Код (Text):
    1. <? $time_t = date('Y-m-d');
    2.  
    3. $result_view_today = mysql_query('SELECT COUNT(*) FROM view_anket WHERE id_users_see='.$myrow_user[id].' and date(Y-m-d, `time_view`) = '.$time_t);
    4. $temp_view_today = mysql_fetch_array($result_view_today);
    5. $posts_view_today = $temp_view_today[0];
    Добавлено спустя 37 секунд:
    пробуй если не поможет весь листинг дай
     
  7. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    кто разбирается в запросах, подскажите, есть правильные варианты?)
     
  8. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    serj011 ты такой странный кто ж тебе скажет,надо знать куда там переменная идёт и так далее.
    Если ты программистом хочешь стать будь готовым по 100 вариантов проверять.Думаешь программирование
    это кнопочку нажал всё готово.Возможно но к этому надо долго идти.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    "Формат time()" это время в секундах от начала времён. Чтобы сделать выборку за дату нужно сколько было секунд на начало этой даты в ноль часов ноль минут ноль секунд, и на конец этой даты 23:59:59.
     
  10. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Попробую все переформулировать.
    Задача: вытащить все строки, которые соответствуют сегоднешней дате.

    В таблицу дата заносится в формате time(); в time_view
    Я думаю что есть и более правильные варианты, но мой такой)

    перед запросом я беру текущую дату в формате Y-m-d' - $time_t = date('Y-m-d');
    а в запросе необходимо из поля time_view вытащить дату в таком же формате - date('Y-m-d', time_view); и соответственно вытащить те строки где date('Y-m-d', time_view) = $time_t

    Я считаю что смысл правильный, только где то в запросе есть орфографическая "ошибка")

    jei, спасибо за желание помочь, мне кажется ты смысл уловил правльно, ошибка связана с ('.) или т.п., только раставил ты эти символы вообще от фонаря)))

    Добавлено спустя 24 минуты 17 секунд:
    експерсс примерчик )

    $time_view = time();
    $result = mysql_query ("INSERT INTO view_anket (time_view) VALUES('$time_view')");

    пример занесенных данных = 1353362279

    $pdpa = date('Y-m-d', $result['time_view']);
    echo $pdpa = 2012-11-19

    $time_t = date('Y-m-d');
    echo $time_t = 2012-11-19

    $pdpa = $time_t равно УРА!)

    Добавлено спустя 36 минут 48 секунд:
    тема закрыта. вот решение

    MariaDB [(none)]> SELECT date(FROM_UNIXTIME(1353362279));
    +---------------------------------+
    | date(FROM_UNIXTIME(1353362279)) |
    +---------------------------------+
    | 2012-11-20 |
    +---------------------------------+
    ))
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    мммм
    запрос покажи целиком
     
  12. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    $result_view_today = mysql_query("SELECT COUNT(*) FROM view_anket WHERE id_users_see=$myrow_user[id] and date(FROM_UNIXTIME(time_view)) = '$time_t'");
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я б сделал иначе. есть у меня подозрение, что при таком запросе индексы не заюзаются. Но я так понимаю, тебе пока на это насрать =)
     
  14. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    правильно пинимаешь)))) пока ДА)
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это не на долго =)
     
  16. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    igordata, а так?
    Код (Text):
    1. $result_view_today = mysql_query("SELECT COUNT(*) FROM view_anket WHERE id_users_see=$myrow_user[id] AND time_view >= UNIX_TIMESTAMP(DATE('$time_t')) AND time_view < UNIX_TIMESTAMP(DATE('$time_t')+1)");
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я тебе говорил как. у тебя время в секундах записано. в секундах и сравнивай. Тогда строка
    time_view >= UNIX_TIMESTAMP(DATE('$time_t')) AND time_view < UNIX_TIMESTAMP(DATE('$time_t')+1)
    превратится в
    time_view BETWEEN $period_start AND $period_end

    А вобще надо было хранить время в timestamp и тогда бы было бы проще жить