# datum und uhrzeit in einer mysql-tabelle speichern - WIE?



## fishguts (31. März 2002)

frohe ostern! 
ich hab für meine hp ein newsletter script geschrieben
im moment werden die eMail-adresse einer ID zugeordnet und in einer mysql-datenbank abgespeichert
im adminberreich kann man sich dann alle adressen anzeigen lassen
sieht dann etwa so aus:

1. user1@provider.de
2. user2@provider.de
3. user3@provider.de
etc.

jetzt wollt ich das script so abändern, dass anstelle der IDs das datum und die uhrzeit der registrierung gespeichert und mit angezeigt werden
wie kann ich das anstellen?
am einfachsten wärs wohl mit einer spalte für die adressen und einer (zwei?) für datum und uhrzeit
wie speichere ich das datum und die uhrzeit jetzt am besten ind der tabelle? gibts da ne mysql-funktion (welche und wie?) oder wärs mit php (getdate()) einfacher
wie genau würdet ihr die tabelle anlegen?

die daten aus der tabelle wollt ich dann schlieslich in ein array einlesen, um sie im adminberreich wieder auszugeben
etwa so:
$array[datum] bzw. $array[uhrzeit]

zu hülf!


----------



## Morph (31. März 2002)

```
$timestamp = time();
```
Die aktuelle Zeit als UNIX *timestamp*
Die speicherst du zu der email adresse, umwandeln kannst du diesen zeitstempel (lol) mit

```
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
echo $datum," - ",$uhrzeit," Uhr";
```
Noch Fragen ?

*€dit: * Wünsch dir natürlich auch Frohe Ostern 

Grüße, Morph


----------



## ..ooOOipOOoo.. (31. März 2002)

Hoi!

Mir sind insgesamt 4 Datentypen bekannt, mit deren Hilfe du eine Zeitangabe in einer mySQL Tabelle Speichern kannst:

TIMESTAMP
DATETIME
DATE
TIME

Ein Timestamp ist ein "Fingerprint" der aktuellen Zeit. Um genau zu sein die Sekunden, die seid dem 1.1.1970 vergangen sind.
Wie DATETIME das Datum und die Zeit aufnimmt weiß ich nicht, aber sehr warscheinlich in folgendem (oder einem ähnlichen) Format:

YYYY-MM-DD hh:mm:ss

DATE nimmt das Datum in folgendem Format auf:

YYYY-MM-DD

und TIME eine Uhrzeit in folgendem Format:

hh:mm:ss

Du könntest nun zB eine Tabelle mit Index, Adresse, Datum und Zeit Feldern anlegen und diese zB so befüllen:


```
$sql = "INSERT INTO email VALUES ('0','$mail','".date("%Y-%m-%d")."', '".date("%H:%M:%S")."');
```

Gruesse

..ooOOipOOoo..


----------



## TheVirus (31. März 2002)

Also ich wäre da vorsichtig mit dem MySQL Timestamp. Ich kriege nämlich keinen Unix Timestamp sondern irgendwas anderes in der Form: 20020331152938 (und das nicht nur auf meiner Windows Maschine sondern auch auf dem Server).

Das ist insofern Problematisch weil PHP einen den richtigen Timestamp benutzt.

Deswegen benutze ich für alle Sachen, für die ich datum und Uhrzeit benötige ein normales Integer Feld in der Datenbank und schreibe den von PHP erzeugten Timestamp rein. 

Mit den restlichen Datentypen wie date oder time kann man nicht direkt rechnen. Mit timestamps schon und Funktionen zum formatierten anzeigen vom Datum und von der Uhrzeit hat PHP.

So Long
TheVirus


----------



## ..ooOOipOOoo.. (31. März 2002)

Hoi!

In einem Buch ("Das Einsteigerseminar PHP4" ISBN: 3-8-266-7151-1, übrigens nicht unbedingt empfehlenswert) wird geschrieben, dass im ersten Timestamp in einer Tabelle immer die letzte änderung dieser automatischgesichert wird. Evtl liegt daran der Fehler.

Gruesse

..ooOOipOOoo..


----------



## fishguts (31. März 2002)

mit dem buch hab ich auch mal versucht php zu lernen...
danke für eure schnelle hilfe
hab eure vorschläge jetzt kombiniert 

```
$timestamp = time();
$datum = date("d.m.Y", $timestamp);
$uhrzeit = date("H:i", $timestamp);
$uhrzeit .= " Uhr";
```

$datum und $uhrzeit werden jetzt jeweils in einer eigenen tabellen-spalte gespeichert
meine tabelle sieht also so aus:

|adresse|datum|uhrzeit|

wie kann ich jetzt alle werte aus einer zeile in ein array einlesen, so dass ich die werte später mit $array[adresse] bzw. $array[datum] und $array[uhrzeit] ansprechen kann?
gruss


----------



## TheVirus (31. März 2002)

Ein feld in der DB reicht. Feld Timestamp meinetwegen. Der timestamp beinhaltet datum UND Uhrzeit!


```
$link = mysql_connect ($db_host,$db_usrnam,$db_passwd)
		or die ("Could not connect to DB Server");
mysql_select_db ($db_name)
	or die ("Could not select the Database " . $db_name);

$query = "SELECT * FROM deine_tabelle";
$result = mysql_query ($query) or die ("Query Error<br>".mysql_error());
while ($row = mysql_fetch_array ($result))
{
  echo $row["adresse"];
  echo date("d.m.Y", $row["zeitstempel"]);
  //etc
}
```


----------



## wums (31. März 2002)

wie kann ich beiträge dann bei der ausgabe nach der zeit, mit uhrzeit, und tag, monat, jahr, ordnen!
also einfach das der neueste beitrag oben ist?


----------



## TheVirus (31. März 2002)

```
$query = "SELECT * FROM deine_tabelle ORDER BY zeitstempel DESC";
```

Du solltest vielleicht mal das MySQL handbuch lesen!


----------



## ..ooOOipOOoo.. (1. April 2002)

Hoi!

Ich will nocheinmal darauf hinweisen, dass bei einem update eines Datensatzes, von dem der erste Timestamp von links her gesehen nicht explizit gesetzt wird, zur folge hat, dass der Timestamp die aktuelle Serversystemzeit annimt, automatisch!

Gruesse

..ooOOipOOoo..


----------



## TheVirus (1. April 2002)

Das ist richtig. Aber nur wenn du im MySQL feld den Datentypen Timestamp gewählt hast, der Ohnehin nen falschen Timestamp bietet.

Also immer schön von hand setzten!

So Long
TheVirus


----------



## Chino (1. April 2002)

hab da auch mal ne frage 

so, ich hab in der datenbank das datum mit abgespeichert. jetzt möcht ich für einen archiv bereich das nach monaten ordnen. wie geb ich denn jetzt an, dass der nur die daten mit einem bestimmten monat ausliehst und anzeigt ?


----------



## fishguts (1. April 2002)

in welchem format sind die daten denn gespeichert?


----------



## Trash (1. April 2002)

ich habe so etwas auch vor kurzem gemacht, aber ganz leicht 


```
<?php 

$datum = date("d.m.Y");
$stunden = date("H");
$minuten = date("i");
$sekunden = date("s");
?>
```

und dann beim Abschicken:


```
<tr><td><input type="hidden" name="zeit" value="<?php echo "$datum | $stunden:$minuten:$sekunden Uhr" ?>"></td></tr>
```

dann kannste die Variable $zeit" einfach in ein normales varchar schreiben, nachteil Du kannst nichts per Datum sortieren...


----------

