# Time in Datum um wandeln | datum in alter umwandeln!! --> ich blick das nicht!



## alive (27. Mai 2003)

1. Problem:
Ich habe in einer Mysql Tabelle einen Timestamp gespeichert, den will ich nun beim auslesen in ein Datum umwandeln..

2.Problem:
Ich habe ein Datum und will das in ein Alter umwandeln!

P.S:Ich habe nach den Stichwörtern "ZEit", "Geburtstag" und "Datum" gesucht... und alles irgendwie nicht so recht verstanden!!
cu alive


----------



## Prijv (27. Mai 2003)

du könntest ja auch direkt date( ... ) nehmen ?


----------



## yson (27. Mai 2003)

Sowohl MySQL als auch PHP bieten dir die Möglichkeit einen Timestamp in ein anderes Format zu bringen:

MySQL macht das mit der Funktion DATE_FORMAT(). Hier ein Beispiel:
SELECT DATE_FORMAT(`spalte`, '%d.%m.%Y') FROM tabelle

so würde die Spalte "spalte" in ein Datumsformat gewandelt werden wie wir es normalerweise benutzen.

schau auch mal hier:
http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Date_and_time_functions

PHP kann das natürlich auch:
echo DATE ("d.m.Y", time());
liefert dir das Datum von jetzt.

http://www.php3.de/manual/de/function.date.php

Gruß, yson


----------



## alive (27. Mai 2003)

den mysql befehl hab ich noch nicht ausprobiert aber das mit date() geht nicht...
ich habe ja einen bestimmten TIMESTAMP nichts was genau jetzt ist!

```
<?php
$sql = ""; // sqlbefehl
$query = mysql_query($sql) ;
while ($daten = mysql_fetch_array($query)) {
$alter = $daten[alter] ;
$alter = ("d.m.Y", $alter); //so?
echo "";
}
?>
```


----------



## SonicBe@m (27. Mai 2003)

```
<?
$db_host ="localhost";
$db_user ="root";
$db_pass ="root";
$db_database ="beispiel";
$conn = mysql_pconnect($db_host,$db_user,$db_pass) or die("connection failed!<br>".mysql_error());
mysql_select_db($db_database,$conn) or die("fehler".mysql_error());

$table = "timestamp";
$result = mysql_query("SELECT timestamp from $table");


while($row = mysql_fetch_object($result)) {
   echo $row->timestamp;
   echo "-";
   echo date("d.m.Y",$row->timestamp);
   echo "<br>";
}
// oder
while($row = mysql_fetch_assoc($result)) {
   echo $row[timestamp];
   echo "-";
   echo date("d.m.Y",$row[timestamp]);
   echo "<br>";
}
// oder *g*
while($row = mysql_fetch_array($result)) {
   echo $row[timestamp];
   echo "-";
   echo date("d.m.Y",$row[timestamp]);
   echo "<br>";
}
?>
```


----------



## alive (27. Mai 2003)

Subbaa... thx... aber wie errechne ich nun aus einem datum 15.12.87 das alter?????


----------



## SonicBe@m (27. Mai 2003)

dazu muste dir ein Datum machen 
mktime();
hier gibste dann das Datum an
nimmst nochmals time();
und subtrahierst es
von heute das abziehen was er eingeben hatt.
*g* bin grad bisl im stress wenn du bis morgen keine Antwort bekommen hast dann werd ich dir eine Funktion programmieren die dir das ergebnis ausgibt..


----------



## Rios (27. Mai 2003)

zur verdeutlichung 

timestamp des jetzigen datums - timestamp des geburtsdatums = ergebnis timestamp

den ergebnis timestamp mit der date methode formatiert ausgeben, am besten natürlich in jahren, nicht in millisekunden


----------



## alive (28. Mai 2003)

Ah... also das eine habe ich war ja easy... --> *vollbloedist*
aber das mit dem alter habe ich noch nicht hinbekommen!!
Bitte helft mir .P


----------



## ludz (29. Mai 2003)

> aber wie errechne ich nun aus einem datum 15.12.87 das alter?????


Naja SonicBeam hats ja schon erwähnt:
Aus 15.12.87 einen Timestamp machen mithilfe von mktime().
Also in deinem Fall z.B.:

```
$tag=15;
$monat=12;
$jahr=1987;

$timestamp_des_geburtstages=mktime(0,0,0,$monat,$tag,$jahr);
```
Jetzt einfach die Anweisung von Rios befolgen:

```
$timestamp_heute=time();
//timestamp des jetzigen datums - timestamp des geburtsdatums = ergebnis timestamp
$timestamp_alter=$timestamp_heute - $timestamp_des_geburtstages;
```

Allerdings stoße ich jetzt hier auch auf ein Problem, wie soll man denn bitte jetzt den Timestamp auf die Form von Jahren bringen?!

Ne einfachere Möglichkeit wäre doch, das Geburtsjahr vom aktuellen abzuziehen und auszugeben. Naja, hier wäre natürlich eine gewisse Ungenauigkeit vorhanden, da nicht auf Monate oder Tage geachtet wird.


----------



## alive (30. Mai 2003)

Hm, wahrscheinlich bin ich nur dumm , aber ich habe ja ein Datum, dass vom User angegeben wurde sagen wir im format 
tt-mm-jjjj (meins:15.12.1987) wie bekomm ich dann aus dem Datum raus die 

```
$tag = 15 ;
$monat = 12 ;
$jahr = 1987 ;
```
ich solte sowas mal lernen^^


----------



## ludz (30. Mai 2003)

das geht ganz einfach: mit der Funktion explode()!
Wenn deine User das Datum in der Form angeben: 15.12.1987, dann würde das folgendermaßen aussehen:

```
$datum="15.12.1987"; //Das Datum hier kann natürlich auch aus ner DB kommen oder von nem Formular übergeben werden
//Jetzt "teilen" wir diesen String durch das Trennzeichen . (Punkt) in 3 Einzelteile:
$teil=explode(".",$datum);
//Dadurch entsteht ein Array, also $teil[0] bis $teil[2]
$tag=$teil[0]; //also in diesem Falle 15
$monat=$teil[1]; //hier: 12
$jahr=$teil[2]; //hier: 1987
```
Links dazu:
http://de3.php.net/manual/de/function.explode.php
http://www.selfphp.info/funktionsreferenz/string_funktionen/explode.php


----------



## own_way (18. Januar 2005)

*Re: Time in Datum um wandeln | datum in alter umwandeln --> ich blick das nicht!*

Hallo zusammen!

 Das mit dem PHP-Code ist cool - sowas kann man sicher sehr gut gebrauchen!
 Hat jemand eine Ahnung ob sowas auch in einer Access-Datenbank funktioniert? Ich habe mir eine Kontaktdatenbank erstellt von allen meinen privaten Kontakten und würde da jetzt gerne in einer Spalte das Alter ausgeben... Geht sowas? Müsste doch dann ein SQL-Code sein, oder!?

 Wär cool, wenn da jemand drauf antworten würde (auch wenn´s evtl. nicht geht).

 Vielen Dank,
 Jan


----------



## blaufisch (26. März 2005)

*Re: Time in Datum um wandeln | datum in alter umwandeln --> ich blick das nicht!*

Probiere es mal mit diesem Code:
--
$alter  = explode(".","TT.MM.YYYY");
$jahre  = date("Y")-$alter[2]-1;
$monate = date("m")-$alter[1];
$tage   = date("d")-$alter[0];
if ($monate == 0 && $tage == 0) { $jahre++; $jahre .= " (Heute Geburtstag!)"; }
if ($monate >= 0 && $tage >= 0) { $jahre++; }
echo $jahre;
--
Du prüfst damit einfach, ob ein zusätzliches Jahr hinzugekommen ist. Damit kannst Du dann auch Daten von vor 1970 bearbeiten.

HTH
Lutz

--
hai.tec IT-Services
http://www.haitec.cc
--


----------

