Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как прибавить к DATETIME 3 месяца?
 
 автор: sega_z   (08.11.2011 в 22:47)   письмо автору
 
 

Всем доброго дня!!!

Из Mysql извлекается переменная $data с датой и временем (DATETIME).

Как к переменной $data прибавить ровно 3 месяца (с точностью до секунды) и получить переменную $data_end ?

  Ответить  
 
 автор: Shorr Kan   (09.11.2011 в 02:21)   письмо автору
 
   для: sega_z   (08.11.2011 в 22:47)
 


<?
$time
=strtotime($data);
$data_end=date('Y-m-d H:i:s',mktime(date('H',$time),date('i',$time),date('s',$time),date('m',$time)+3,date('d',$time),date('Y',$time)));
?>



<?
$date 
date_create($data);
date_add($datedate_interval_create_from_date_string('3 months'));
$data_end=date_format($date'Y-m-d H:i:s');
?>

  Ответить  
 
 автор: Valick   (09.11.2011 в 09:02)   письмо автору
 
   для: sega_z   (08.11.2011 в 22:47)
 

это можно сделать сразу в БД еще до извлечения и извлекать уже готовую дату
опишите дальнейшее использование переменной $data_end

  Ответить  
 
 автор: cheops   (09.11.2011 в 14:00)   письмо автору
 
   для: sega_z   (08.11.2011 в 22:47)
 

Удобнее всего конечно, прибавить три месяца средствами MySQL
SELECT data + INTERVAL 3 MONTH AS data FROM tbl

  Ответить  
 
 автор: Valick   (09.11.2011 в 15:12)   письмо автору
 
   для: cheops   (09.11.2011 в 14:00)
 

а может и использовать сразу в условии запроса, поэтому я и спросил про назначение конечной даты
но видимо автор уже схватил первую попавшуюся идею и погряз в килобайтах кода :)

  Ответить  
 
 автор: sega_z   (09.11.2011 в 20:29)   письмо автору
 
   для: Valick   (09.11.2011 в 15:12)
 

После получения $data_end у меня происходит сравнение с первоначальной датой $data:

if ($date > $date_end) //Если просрочено то удаляем текст из базы данных


Как можно вставить прибавку в условие? (думаю так удобнее)

  Ответить  
 
 автор: Shorr Kan   (10.11.2011 в 02:31)   письмо автору
 
   для: sega_z   (09.11.2011 в 20:29)
 

как может быть первоначальная дата больше конечной, если к первоначальной вы добавляете три месяца и получаете конечную? Видимо у вас два столбца с датами...

тогда это делается единым запросом:

DELETE FROM table WHERE date1>(date2 + INTERVAL 3 MONTH)


p.s. либо вы хотите к дате прибавить три месяца и сравнить ее с сегодняшней датой

  Ответить  
 
 автор: Valick   (10.11.2011 в 03:30)   письмо автору
 
   для: sega_z   (09.11.2011 в 20:29)
 

нуууу...
теперь вы понимаете свою ошибку?
вы задали вопрос как прибавить к дате три месяца...
а вопрос должен был звучать как удалить из базы информацию старше 3-х месяцев
DELETE FROM table WHERE date + INTERVAL 3 MONTH < NOW()

___
пойду "убью" кота... задолбал шухерить пол четвертого утра

  Ответить  
 
 автор: sega_z   (10.11.2011 в 17:24)   письмо автору
 
   для: Valick   (10.11.2011 в 03:30)
 

Просто у меня много вариантов обработки даты публикации, в зависимости от типа информации.
Поэтому я не ошибся с вопросом, просто это один из вариантов работы скрипта.
И все приведенные вами коды будут задействованы у меня на сайте.

Спасибо за помощь, то что надо!!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования