За последние 24 часа нас посетили 18270 программистов и 1597 роботов. Сейчас ищут 893 программиста ...

Вычислить оставшееся время, до определенной даты

Тема в разделе "MySQL", создана пользователем Quebec, 7 июн 2014.

  1. Quebec

    Quebec Новичок

    С нами с:
    22 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Задача такая, есть таблица банлиста, в банлисте есть поле с датой истечения бана. В случае если пользователь забанен, ему должно выдаваться количество дней, часов и/или минут до истечения бана. Другими словами, нужно посчитать количество времени с текущего момента, до даты истечения бана. Читал о функциях преобразования даты в MySQL, но так и не сообразил как это реализовать. Как построить такое выражение?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Храните его в секундах.

    Потом из времени, хранящегося в БД вычитайте время в секундах реальной даты. То, что получилось, пересчитывайте в человекопонятную дату средствами php, в нем есть функции для таких ситуаций.
     
  3. Quebec

    Quebec Новичок

    С нами с:
    22 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Дата хранится в DATETIME. И нельзя ли расчет произвести средствами MySQL при запросе, без php?
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Зря.
    По факту можно, но зачем? Те же орехи, только в профиль.

    ИМХО, работа БД - отдавать инфу. Дальнейшая логика - не ее дело.
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Можно. Тебе придется получить текущую дату это не кешируется. Потом вычислять раздницу в секундах потом SEC_TO_TIME. Вроде есть функция для вычисления разницы во времени сам поищи.

    Если sql не сложный то дерзай.
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    тебе почти повезло, я недавно разбирался с датами, вот:
    Код (PHP):
    1. $create = date("Y-m-d");
    2. $delete = date("Y-m-d", strtotime($create. ' +55 day'));
    3.  
    4. $remain = ( strtotime($delete) - strtotime ($create) ) / 86400 ; 
    5. // 55 дней, тут еще желательно округлять, т.к. речь идет о днях - floor()
    тебе надо только свой формат подставить ну и с делением подшаманить.
     
  7. Quebec

    Quebec Новичок

    С нами с:
    22 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Всем спасибо.