DATETIME в MySQL

Тема в разделе "PHP", создана пользователем OnArs, 18 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    Здравствуйте, ув. Nulled'овцы! :ay:

    Работаю с датами, в данном случае использую тип поля DATETIME, так вот - подскажите пожалуйста:

    В Базе есть 3 строки:
    PHP:
    |ID pos_time 
    |------------------------------
    1  2009-04-18 15:13:21
    2  2009-04-18 15:14:34
    3  2009-04-18 15:15:55
    Нужены запросы:
    • Для выбора из базы всех строк с параметром ЗА СЕГОДНЯШНИЙ ДЕНЬ
    • Для сортировки по времени(часы, минуты, секунды)

    Пробую вот так:
    PHP:
    SELECT FROM base WHERE pos_time current_date() - INTERVAL 1 DAY
    Но, увы...


    Заранее благодарен любым ответам! ;)
     
  2. semakos

    semakos Постоялец

    Регистр.:
    26 окт 2008
    Сообщения:
    63
    Симпатии:
    14
    Можно попробывать сделать так:
    Код:
    "SELECT * FROM `base` WHERE `pos_time` LIKE '".date('Y-m-d')."%' ORDER BY `post_time` ASC" (или DESC, смотря в каком порядке сортировать)
    
    Сортировать будет по времени, т.к. дата будет одинаковая.
     
  3. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    Да нет, это извращение, нужно нечто вроде:
    PHP:
    SELECT FROM base WHERE TO_DAYS(NOW())=TO_DAYS(pos_time)  
     
  4. Ton

    Ton Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    55
    Симпатии:
    9
    А чем тебе не нравится это?
     
  5. bunny

    bunny Постоялец

    Регистр.:
    17 мар 2007
    Сообщения:
    66
    Симпатии:
    4
    тон ето ты к чему я чето недогнал
     
  6. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    HTML:
          > NOW() — INTERVAL 24 HOUR
     
  7. Ton

    Ton Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    55
    Симпатии:
    9
    Просто запрос:
    PHP:
    SELECT FROM base WHERE TO_DAYS(NOW())=TO_DAYS(pos_time)  
    Вполне отвечает требованиям OnArs. Ну разве что ORDER BY добавить.
    Вот о чем я.
     
  8. Atec

    Atec

    Регистр.:
    28 апр 2007
    Сообщения:
    296
    Симпатии:
    31
    Для пхп хранить дату в таком формате имхо не рационально... имхо нужно хранить в формате int(12) и засовывать туда метку time() и тогда будет счастье с сортировками и т.п.
     
  9. Ton

    Ton Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    55
    Симпатии:
    9
    Ну ты и высказался. Для начала MYSQL поддержует тип данных как `timestamp` а не int(12), во вторых есть функция UNIX_TIMESTAMP(date) для переобразования в timestamp.
    И вообще timestamp это пережиток прошлого.
     
  10. Atec

    Atec

    Регистр.:
    28 апр 2007
    Сообщения:
    296
    Симпатии:
    31
    Однако запросы работают быстрей, сортировка легче, проблем с выдачей (за сегодня, за месяц, от такого то по такое то) нету, + есть куча ява календарей которые прекрасно работают с такой структурой... к тому же если бы вы изучали скорость работы запросов и экономичность типов данных то знали бы что тип int - один из самых "шустрых" и поэтому менять его на какойто там timestamp или datetime для мощных проектов - имхо глупо... хотя ТС в первом посте написал что он именно с datetime работает, поэтому я ему и сочувствую... :)
     
Статус темы:
Закрыта.