![]() |
Не правильно высчитывает год...
Вот собсно ковырял манку (MySql) 5.0 решил попробывать..
mysql> select name, birth, curdate(), (year(curdate())-year(birth)) - (right(curdate(),5)<right(birth,5)) as age from pet; Но... Почему то заместь 11ти лет показует 10ть... Учитывая что, как бы, выбираем только по году.... В общем кто знает, прокоментируйте плз. +--------- ----+----------------+----------- ---+------+ | name | birth | curdate() | age | +--------------+----------------+---------------+------+ | Whistler_3 | 1997-12-09 | 2008-04-13 | 10 | | Whistler_3 | 1997-12-10 | 2008-04-13 | 10 | | Whistler_3 | 1997-12-10 | 2008-04-13 | 10 | | Whistler_2 | 1997-12-09 | 2008-04-13 | 10 | | Whistler_2 | 1997-12-09 | 2008-04-13 | 10 | | Whistler_2 | 1997-12-11 | 2008-04-13 | 10 | | Whistler_2 | 1997-12-09 | 2008-04-13 | 10 | | Whistler_1 | 1997-12-11 | 2008-04-13 | 10 | | Whistler_1 | 1997-12-09 | 2008-04-13 | 10 | | Whistler_1 | 1997-12-11 | 2008-04-13 | 10 | | Whistler_1 | 1997-12-09 | 2008-04-13 | 10 | +----------- --+----------------+---------------+------+ |
В чём проблема-то? Тот, кто родился в декабре 1997 года сейчас десятилетний.
|
Проблема в том, что я не могу понять почему 10ть лет. Ведь месяцы не трогаем, а считаем только по годам... А если считать только года то 2008 минус 1997 ну никак 10ть не получается.. =/
|
попробуй так:
mysql> select name, birth, curdate(), (left(curdate(),4) - left(birth,4)) as age from pet; Должно сработать =) и красивее смотриццо =) |
2rus-4-ever ^_^ СПС
И ещё.. Обьясните плз значение выражения Цитата:
|
Смари...
(year(curdate())-year(birth)) - (right(curdate(),5)<right(birth,5)) Разобьём на 2 выражения 1)(year(curdate())-year(birth)) - вычисляет сколько лет прошло (не учитывая месяцы)... 2)(right(curdate(),5)<right(birth,5)) - логическое выражение.. если текущая дата меньше чем дата рождения, то вычитается единица |
Хм... Отсюда следует что если условие "<" выполняется то значение в скобках будет единицей, иначе ноль.. Так? :)
ЗЫ: Просто не понимаю откуда у нас появляется эта единица. Если б было написано " - 1".. Тады чего там думать и так всё понятно.. :) |
ну да!!!
true==1 !!! false==0 !!! Это логическое выражение... сокращённый вид... |
Это как в КВНе...
"Да идите вы.... " "Не, ну интуитивно я предпологаю куда... Но хотелось бы уточнить...." ЗЫ: Спс за разьяснения. ^_^ |
Время: 13:33. |
Время: 13:33.
© OSzone.net 2001-