За последние 24 часа нас посетили 53926 программистов и 1717 роботов. Сейчас ищут 934 программиста ...

Сортировка по датам

Тема в разделе "PHP для новичков", создана пользователем greenzlat, 9 авг 2011.

  1. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Есть таблица - календарь матчей. Есть поле date в формате datetime.
    Нужно сделать выборку всех записей, где date = 30.08.2011.

    PHP:
    1. <?php
    2. $day = mysql_query ("SELECT *, DATE_FORMAT(date,'%d.%m.%Y %H:%i') AS date_t FROM `calendar` WHERE ???????? ORDER BY `date` ASC",$db) or die (mysql_error());
    3. ?>
    Дело в том, что в поле date дата хранится так: 2011-08-30 16:15:00 - дата и время начала матча.
    Как мне сделать выборку за определенную дату и потом в цикле вывести матчи по времени:
    30 августа 2011
    16:15 Россия - Тунис
    16:30 Россия - Зимбабве
    Подскажите алгоритм.
     
  2. MaXyC_Web_Studio

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

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    WHERE `date_t` BETWEEN дата1 AND дата2

    если ошибка where будет, то посмотри маны heaving
     
  3. MaXyC_Web_Studio

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

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    п.с. не использую никогда даты в формате date
    юзаю всегда timestamp
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Если нужно за один день, можешь написать
    WHERE DATE(`date`) = '2011-08-01'
     
  5. Reposlav

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

    С нами с:
    5 авг 2011
    Сообщения:
    34
    Симпатии:
    0
    [sql]
    SELECT *, DATE_FORMAT(date,'%d.%m.%Y %H:%i') AS date_t
    FROM `calendar`
    WHERE `date` BETWEEN '2011-08-30 00:00:00' AND '2011-08-30 23:59:59'
    ORDER BY `date`
    [/sql]
     
  6. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Reposlav
    Спасибо, твой алгоритм помог!
     
  7. krow7

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

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    Шустро это так Россия играет, 15 мин максимум матч ;)
     
  8. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Блин ребята
    это двиг какой-то ? уже не первая тема с использованием данного вида дат. где вы такую реализацию берёте ?
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Да нормально, я тоже MySQL DATE и DATETIME часто использую :) Когда приходится периодически руками в базе копаться (например, так как нет времени написать норм. админку или какие запросы попросят специфические, выгрузки там) - удобнее когда дата выглядит как дата, а не как циферки непонятные
     
  10. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    А еще такой вопрос:
    Делаю выборку матчей на сегодня так:
    PHP:
    1. <?php
    2.         $date1 = date ("Y-m-d 00-00-00");  
    3.         $date2 = date ("Y-m-d 23-59-59");  
    4.         $day = mysql_query ("
    5.         SELECT *, DATE_FORMAT(date,'%d.%m.%Y %H:%i') AS date_t
    6.         FROM `calendar`
    7.         WHERE `date`
    8.         BETWEEN '$date1' AND '$date2'
    9.         ORDER BY `date` ASC
    10.         ",$db) or die (mysql_error());
    11.        
    12. if (isset($day))
    13. {
    14.     echo "Сегодня матчей не запланировано";
    15. }
    16. else {
    17.  
    18.         while ($day1 = mysql_fetch_array ($day))
    19.         {
    20.             $team1 = $day1['id_team1'];
    21.             $team2 = $day1['id_team2'];
    22.             $team1 = mysql_query ("
    23.             SELECT id,team
    24.             FROM `team`
    25.             WHERE `id`='$team1'
    26.             ",$db) or die (mysql_error());
    27.             $team1 = mysql_fetch_array ($team1);
    28.            
    29.             $team2 = mysql_query ("
    30.             SELECT id,team
    31.             FROM `team`
    32.             WHERE `id`='$team2'
    33.             ",$db) or die (mysql_error());
    34.             $team2 = mysql_fetch_array ($team2);
    35.        
    36. ?>
    37.  
    А подскажите как мне продолжить поиск по БД записей, если на сегодня нет матчей, то искать ближайший день и за него делать выборку?
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    PHP:
    1. <?php
    2. //...
    3. $day = mysql_query ("
    4.         SELECT *, DATE_FORMAT(date,'%d.%m.%Y %H:%i') AS date_t
    5.         FROM `calendar`
    6.         WHERE `date`
    7.         BETWEEN '$date1' AND '$date2'
    8.         ORDER BY `date` ASC
    9.         ",$db) or die (mysql_error());
    10.          
    11.  if (isset($day))
    12.  {
    13.      echo "Сегодня матчей не запланировано";
    14.  }
    15. else
    Чё за хрень? $day всегда будет isset, даже если запрос вернул 0 или вообще с ошибкой.
     
  12. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Ошибся, у меня так:
    PHP:
    1. <?php if (!isset($day))?>