Autor Zpráva
Jack06
Profil
Dobrý den. Mám v databázi uložen datum narození ve formátu: 1990-02-17
a potřeboval bych z toho zjistit věk..
Prosím o radu.. toto mi totiž nefunguje. Děkuji
floor((date("Ymd") - date("Ymd", $data['born'])) / 10000);
Nox
Profil
Ano, tohle není moc dobrý postup

Nejlepší podle mě bude použít nativní databázové funkce, tudíž třeba

select date_sub(curdate(), born) from table where ...

kde "born" bude název sloupce s datem narození

Tyto fukce by navíc měly být sofistikované a brát ohled na věci jako přestupný rok atd.
Jack06
Profil
v tabulce mám born type date, a nějako mi to nejde.. mám výběr:

$result = $db->query("SELECT id, nick, rights, sex, date_sub(curdate(), born) FROM `users` WHERE (nick='$user_name' AND (pass='$user_pass' OR pass='".md5($user_pass)."')) LIMIT 1");
	if ($result->num_rows == 1) {
}

a hází mí to num_rows 0 a když odstraním to s tím born tak to jde :-(
Anonym
Profil *
Pokud to ale podle toho nechces řadit, jednodušší by bylo použít php funkci strtotime
Jack06
Profil
Anonym
problém je ale že to strtotime je od roku 1970... dál to nebere a končí to rokem ted nevím přesně, ale omezuje to
123
Profil *
http://dev.mysql.com/doc/refman/5.0/en/date-calculations.html
Jack06
Profil
Já to nechápu mě to vypíše 2009
Jack06
Profil
tabulka:
CREATE TABLE users (
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  nick VARCHAR(15) NOT NULL,
  pass VARCHAR(32) NOT NULL,
  rights TINYINT(2) UNSIGNED NOT NULL,
  sex ENUM('m','z') NOT NULL DEFAULT 'm',
  born DATE NOT NULL,
  PRIMARY KEY(id)
);


Výběr z db:

	$result = $db->query("SELECT id, nick, rights, sex, (YEAR(CURDATE())-YEAR(born)) - (RIGHT(CURDATE(),5)<RIGHT(born,5)) AS age FROM `users` WHERE (nick='$user_name' AND (pass='$user_pass' OR pass='".md5($user_pass)."')) LIMIT 1");
	if ($result->num_rows == 1) {	$data = $result->fetch_assoc();
       
        print $data['age'];
        }


Výsledek mi vypíše 2009 :-(

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: