арифметика с датами

нубастый_мэн

Новичок
арифметика с датами

суть такая. в бд в поле типа (DATE) хранится дата рождения юзера. допустим вот такая (20.02.1983) как можно вычислить его возраст на сегодняшний день.
может есть какая-нибудь фича для вычитания дат )))
 
начнем с того, что такую дату не допустим.
дата должна быть только такая: 1983-02-20

-~{}~ 19.12.08 12:08:

далее.
я даю тебе ссылку. как пример того, что все нужное есть в документации.
http://phpclub.ru/mysql/doc/date-calculations.html

и впредь все надо искать там. самостоятельно
 
*****
спасибо.
тогда следующий вопрос.
у меня почему-то дата хранится в таком виде (20.02.1983)
в форме реги есть три инпута. для года,месяца и дня рождения
переменную для вставки формирую вот так.

$date_birth = $_REQUEST['year'].'-'.$_REQUEST['month'].'-'.$_REQUEST['day'];
Но такого вида 1983-02-20 почему-то всё равно нет.

p.s я новчиок в пхп ). сильно не бейте за такие жуткие вещи.
 
на каком основании ты решил, что дата хранится как "20.02.1983"?
не проще ли не тупить (и нам тоже), а сообщить тип поля в таблице? phpMyAdmin - знаешь, что это?
даты в поле DATE или DATETIME хранятся как ГГГГ-ММ-ДД, а не ДД.ММ.ГГГГ
Если дата хранится как 20.02.1983, значит тип поля - обычный текст (VARCHAR, CHAR, TEXT и т.д.)
 
в общем, нужно:
1. организовать проверку корректности ввода даты, иначе 31 февраля 2008 в базу попадет как 0000-00-00 (а нужно выдать ошибку юзеру), а если вместо даты введут строку - тебе взломают сайт :) Для этого изучи функции php: mktime(), date(), addslashes().
2. хранить действительно в поле DATE.
3. чтобы вычислить разность 2х дат - ссылка выше. Она вычислят разность средствами MySQL.
4. при показе даты из базы на сайт, делаешь обратную конвертацию.
 
я еще в первом посту сказал, что типо поля DATE
возможно EMS SQL manager отображает дату именно как (20.02.1983). потому что
echo $date_birth выводит 1983-02-20 и я думаю, при выполнении запроса, была бы ошибка.
 
Сверху