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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: вычисление количества дней между двумя датами

Сообщения:  [1-10] 

 
 автор: P@Sol   (09.06.2005 в 09:48)   письмо автору
 
   для: P@Sol   (09.06.2005 в 09:37)
 

вот, я решил использовать такую строку:

$age = floor((time() - mktime($hour, $minute, $second, $month, $days, $year))/(86400*365));

p.s. floor - округление в меньшую сторону

   
 
 автор: P@Sol   (09.06.2005 в 09:37)   письмо автору
 
   для: cheops   (08.06.2005 в 22:08)
 

но Вы же сами должны понимать, что это много не точно:)...мне в этом году может быть x и (х+1) год...а выводится в течении года будет всегда один возраст:(

а если то что было написано для php поделить еще на 365?

   
 
 автор: cheops   (08.06.2005 в 22:08)   письмо автору
 
   для: P@Sol   (08.06.2005 в 17:08)
 

Это проще сделать при помощи средства PHP пусть год храниться в ячейки с именем yer, тогда разницу между текущим годом и полем yer вы сможете вычислить при помощи следующего запроса
SELECT YEAR(NOW()) - year FROM tbl

Здесь используется встроенная функция NOW() возвращающая текущую дату в формате 'YYYY-MM-DD hh:mm:ss' и функция YEAR() извлекающая из даты год.

   
 
 автор: P@Sol   (08.06.2005 в 17:08)   письмо автору
 
   для: cheops   (01.12.2004 в 22:27)
 

а как получить из этого в годах?

у меня в бд 3 ячейки день\месяц\год...и надо узнать кол-во лет пользователя занесенного в бд

   
 
 автор: cheops   (01.12.2004 в 22:27)   письмо автору
 
   для: кен   (01.12.2004 в 18:18)
 

Практически аналогичный скрипт на PHP выглядит следующим образом:
<?php
  $text 
"18.05.2004";
  
$hour 0;
  
$minute 0;
  
$second 0;
  
$month substr($text,3,2);
  
$days substr($text,0,2);
  
$year substr($text,6,4);;
  echo (
time() - mktime($hour$minute$second$month$days$year))/86400;
?>

   
 
 автор: cheops   (01.12.2004 в 22:11)   письмо автору
 
   для: glsv (Дизайнер)   (01.12.2004 в 21:54)
 

Кроме того, при регистрации - форум будет сообщать обо всех новых сообщениях с момента последнего посещения и никто не сможет отвечать из под вашего ника.

   
 
 автор: glsv (Дизайнер)   (01.12.2004 в 21:54)   письмо автору
 
   для: кен   (01.12.2004 в 18:18)
 

Если Вы зарегистрируетесь на форуме, то у Вас будет возможность править свои сообщения (пока на них не ответили).

   
 
 автор: кен   (01.12.2004 в 18:18)
 
   для: cheops   (01.12.2004 в 13:43)
 

1) с первым вариантом всё ясно, спасибо.
2) в БД есть вспомогательная таблица, хранящая некоторые общие константные и переменные значения и имеющая 2 поля: name и value. Value может быть числом, строкой или датой. Поэтому используется тип TINYTEXT, позволяющий хранить эти разнородные данные в одном поле в строковом формате. Перед использованием эти данные легко приводятся к нужному типу. Именно поэтому есть вопрос:
- как именно средствами PHP узнать количество дней между двумя датами, заданными в строковом представлении (например, как результат функции date() или дата в таком же строковом виде, взятая из БД)?

P.S. ...И как можно исправить ошибку в сообщении, отправленном на форум?

   
 
 автор: cheops   (01.12.2004 в 13:43)   письмо автору
 
   для: кен   (01.12.2004 в 11:41)
 

1) Для этого можно вопспользоваться комбинацией встроенных функций TO_DAYS и NOW():
SELECT TO_DAYS(NOW()) - TO_DAYS('2004-05-18 09:07:12');

или
SELECT TO_DAYS(NOW()) - TO_DAYS(puttime) FROM tbl WHERE id=45;

Фунция TO_DAYS - преобразует дату в дни, а NOW() возращает текущее время
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=319
2) Встречный вопрос: а имеет ли смысл использовать TINYTEXT под время, дело в том, что в этом случае затрачивается 11 байт под поле, в то время как под любой временной тип только 4, а гибкость операций со временем гораздо выше так как все они хранятся в виде секунд с 1970 года и отличаются только форматом вывода.

   
 
 автор: кен   (01.12.2004 в 11:41)
 
 

Подскажите, как вычислить к-во дней между двумя датами (конкретно, между текущей датой и сохранённой в базе данных)?

Нужны решения для двух случаев:

1) если дата была сохранена в БД как дата (DATE или TIMESTAMP)
2) если дата была сохранена в БД как текст (TINYTEXT), сформированный функцией date("d.m.Y")

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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