Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Раница в "месяцах" между двумя датами в php??

22K
02 июля 2007 года
AlKov
28 / / 26.06.2007
Возникла такая задача - получить разность в месяцах между двумя датами в php скрипте. В секундах, минутах, днях - понятно как сделать, а вот именно в месяцах??? Например, есть дата 1.01.06 и 30.06.07. Реально сие сделать средствами php? Если "да", то в сторону чего смотреть? Результат необходимо отправить в запрос MySQL. Типа того:
 
Код:
<?
$result=mysql_query("SELECT users.uid, users.user, users.fio, users.address, (Sum(actions.in_bytes)/1048576)/".$months." AS out_mb,
          (Sum(actions.out_bytes)/1048576)/"
.$months." AS in_mb, (Sum(actions.in_bytes)/1048576+Sum(actions.out_bytes)/1048576)/".$months." AS sum_mb
          FROM actions INNER JOIN users ON actions.user = users.user
          WHERE (((actions.start_time) Between '"
.$t_start_time."' And '".$t_stop_time."') AND
          ((actions.stop_time) Between '"
.$t_start_time."' And '".$t_stop_time."'))
          GROUP BY users.uid, users.user, users.fio, users.address
          HAVING ((((Sum(actions.in_bytes)/1048576+Sum(actions.out_bytes)/1048576)/"
.$months.")Between ".$mb_min." And ".$mb_max."))",$LINK);
....
?>
где $months - и есть та самая разница между датами $t_stop_time и $t_start_time (формат timestamp)
Может все можно сделать непосредственно в запросе функциями MySQL?
12
02 июля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: AlKov

Может все можно сделать непосредственно в запросе функциями MySQL?


http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_period-diff

12
02 июля 2007 года
alekciy
3.0K / / 13.12.2005
Кстати. Крайне рекомендую купить вот эту книгу: http://www.chaconne.ru/?id=2318729
22K
03 июля 2007 года
AlKov
28 / / 26.06.2007



Благодарю! Самое онО. Для решения конкретной задачи подходит на все 100%.
А вот если вдруг потребуется просто вычислить в php разницу в месяцах между датами, находящимися в двух переменных, то тут как можно поступить?

P.S. В ненавистном многим из присутствующих здесь VB есть "чудесная" функция DateDiff, которая с этой задачей справляется на раз-два. Что-нибудь подобное можно наваять в php? Готового вроде как вообще не существует?

12
03 июля 2007 года
alekciy
3.0K / / 13.12.2005
Нативно на уровне языка я такой функции не знаю. Но по мне написать таковую будет не так уж и сложно...
15
04 июля 2007 года
shaelf
2.7K / / 04.05.2005
Код:
/**
 * Метод сравнивает 2 даты и возвращает разницу в месяцах
 *
 * Формат даты дд.мм.гггг
 *
 * @author shaelf
 * @param string $dateFirst
 * @param string $dateSecond
 * @return int
 */

function diffDate($dateFirst, $dateSecond)
{
    list(,$mouthFirst, $yearFirst)           = explode($dateFirst);
    list(,$mouthSecond, $yearSecond)   = explode($dateSecond);
    $countMouthFirst      = $yearFirst * 12 + $mouthFirst;
    $countMouthSecond  = $yearSecond * 12 + $mouthSecond;
   
    if($countMouthSecond > $countMouthFirst) {
        $rv = $countMouthSecond - $countMouthFirst;
    } else {
        $rv = $countMouthFirst - $countMouthSecond;
    }

    return $rv;
}

Писал в форуме сонный, на ошибки не проверял
12
04 июля 2007 года
alekciy
3.0K / / 13.12.2005
Гы... вот добавить еще принятие даты в любом формате и вообще хорошо будет :D
13
04 июля 2007 года
RussianSpy
3.0K / / 04.07.2006
не проще ли использовать функцию strtotime?
http://www.php.net/manual/ru/function.strtotime.php
15
04 июля 2007 года
shaelf
2.7K / / 04.05.2005
Кому как удобней)))) (Особенно сонному)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог