$sDate = $rowResume ['rs_birth'];
// $sDate = "2009-12-31"
// надо получить "31.12.1970"
2. Как вычислить возраст, зная дату рождения?
Спустя 9 минут, 18 секунд (23.06.2009 - 21:53) kirik написал(а):
Цитата (maq @ 23.06.2009 - 13:44) |
1. Из базы MySQL получаю значение поля даты. Как вывести его в формат дд.мм.гггг? |
PHP |
echo strftime('%d.%m.%G', strtotime('2009-12-31')); |
Цитата (maq @ 23.06.2009 - 13:44) |
2. Как вычислить возраст, зная дату рождения? |
Математика, третий класс.. Из сегодняшней даты вычесть дату рождения.
Спустя 11 минут, 44 секунды (23.06.2009 - 22:05) glock18 написал(а):
Цитата (kirik @ 23.06.2009 - 18:53) |
Математика, третий класс.. Из сегодняшней даты вычесть дату рождения. |
kirik, я думаю, ты не справедлив. Это почти пятый В третьем, наверно, еще такой тип данных date не изучают
Спустя 23 часа, 40 минут, 13 секунд (24.06.2009 - 21:45) maq написал(а):
Цитата |
Математика, третий класс.. Из сегодняшней даты вычесть дату рождения |
Неужели?
1. Я что-то не увидел в ответе двух переменных в формате даты, чтобы из одной вычитать другую.
2. А строковые для этого не годятся. Разве что, сделать что-то наподобие
PHP |
$sYear1 = strftime("%Y", strtotime('2009-12-31')); |
(предварительно сравнив, день и месяц обеих переменных в формате даты)
Так что, с вашей внимательностью действительно в 3-й класс и надо
Спустя 10 минут, 6 секунд (24.06.2009 - 21:55) sergeiss написал(а):
Сам спросил, сам ответил... Все бы так Правда, кАменты я не понял. Особенно насчет внимательности.
PS. А для решения этой задачи есть другие варианты, более грамотные. Но раз автора вопроса удовлетворяет найденный им ответ... То зачем что-то говорить еще?
PS. А для решения этой задачи есть другие варианты, более грамотные. Но раз автора вопроса удовлетворяет найденный им ответ... То зачем что-то говорить еще?
Спустя 14 минут, 7 секунд (24.06.2009 - 22:09) kirik написал(а):
Цитата (maq @ 24.06.2009 - 13:45) |
1. Я что-то не увидел в ответе двух переменных в формате даты, чтобы из одной вычитать другую. |
Предпологалось что до этого нужно дойти самому используя первую подсказку, что вы и сделали, но немного поиграв с датами вы должны были заметить, что день рождения человека, рожденного раньше 1970 года может считаться не правильно (почему?). Поэтому тут нужно оперировать не с unix timestamp, а именно с датами. Посмотрев функции работы с датами и не найдя ничего более-менее подходящего должен возникнуть вопрос: "А могу ли я достать из БД сразу кол-во лет? Ведь там есть удобные функции для работы с датами". И после нескольких опытов родился бы какой-нибудь такой вариант:
SQL |
SELECT ROUND(DATEDIFF(CURDATE(), `birthday`) / 365) AS `age` FROM `users` |
Такой ответ устроит?
Спустя 4 минуты, 16 секунд (24.06.2009 - 22:13) glock18 написал(а):
maq, справедливости ради отмечу, что kirik имел ввиду вовсе не вычитание строк.
Цитата (maq @ 24.06.2009 - 18:45) |
(предварительно сравнив, день и месяц обеих переменных в формате даты) |
дата - это та же строка, только вид сбоку.
PHP |
$sYear1 = strftime("%Y", strtotime('2009-12-31')); |
если бы вы разобрались в этих функциях и с тем, что они делают, то вопросы по тому, как получить разницу дат отпали. а ведь там действительно надо вычесть из одной другую. вот только в каком месте и что из чего почитай и разберись. там все просто
PS: пссс... опаздал я. kirik сам справедливость восстановил
Спустя 3 минуты, 52 секунды (24.06.2009 - 22:17) glock18 написал(а):
SQL |
SELECT ROUND(DATEDIFF(CURDATE(), `birthday`) / 365) AS `age` FROM `users` |
я бы кстати вот так посоветовал
SQL |
SELECT YEAR(DATEDIFF(CURDATE(), `birthday`)) AS `age` FROM `users` |
Разницы нет в принципе, но надо же функцию соответствующую заюзать
Спустя 16 минут, 52 секунды (24.06.2009 - 22:34) kirik написал(а):
Цитата (glock18 @ 24.06.2009 - 14:17) | ||
я бы кстати вот так посоветовал
|
Разве будет работать? Ведь YEAR нужна чтобы получить год из даты, DATEDIFF возвращает разницу между датами в днях, тоесть тут нужно перевести дни в годы.
Спустя 10 минут, 55 секунд (24.06.2009 - 22:45) glock18 написал(а):
а, ну да. тогда так можно
SQL |
SELECT TIMESTAMPDIFF(YEAR,`birthday`,CURDATE()) AS `age` FROM `users` |
вот как-то так. а с YEAR и вправду лажанул. забыл, что datediff возвращает в днях.
Спустя 5 минут, 20 секунд (24.06.2009 - 22:50) kirik написал(а):
Цитата (glock18 @ 24.06.2009 - 14:45) |
тогда так можно |
красивенько
Спустя 5 минут, 45 секунд (24.06.2009 - 22:56) glock18 написал(а):
просто слажал - вот надо было срочно че-то еще придумать
ничего особенного - как обычно просто в mysql, как и php, валяется пара функций, которые никто не юзает почти, а иногда можно че-нить с ними сделать приличное.
ничего особенного - как обычно просто в mysql, как и php, валяется пара функций, которые никто не юзает почти, а иногда можно че-нить с ними сделать приличное.
Спустя 20 часов, 22 минуты, 56 секунд (25.06.2009 - 19:19) maq написал(а):
Цитата | ||
Такой ответ устроит? |
К сожалению, не устроит, т.к. в году не всегда 365 дней.
Цитата | ||
а, ну да. тогда так можно
|
устраивает. Проверил на точность 365-366 - выдает корректно.
Вопрос в догонку: есть ли PHP-функция наподобие TIMESTAMPDIFF?
Спустя 5 минут, 8 секунд (25.06.2009 - 19:24) twin написал(а):
Вот это потести:
PHP |
function find_age($year, $month, $day) |