"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

mysql/php: Datumsformat

fatmike182 14.03.2007 - 11:02 601 8
Posts

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
Für ein forum-ähnliches Tool (todolist) verwende habe ich nur 1 Tabelle in welche das Erstellungsdatum & das Antwortdatum bzw Fertigstelldatum gespeichert werden.

Für gewöhnlich mach ich sowas mit datetime & now() was allerdings das Format YYYY-MM-DD HH:MM:SS zur Folge hat.
(was ich normalerweise mit split weiterverarbeite)

Nachdem ich aber leider mehrere Datetime-felder habe möchteich nicht alle bei der Ein- oder Ausgabe splitten.
Gibt es eine andere Möglichkeit, Datum & Zeit für mich sinvoll auszugeben (DD.MM. HH:MM wäre super; jedenfalls brauch ich sowohl Jahr als auch Sekunden nicht)

tia, Michi
Bearbeitet von fatmike182 am 14.03.2007, 12:01

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4871
http://dev.mysql.com/doc/refman/5.0...-functions.html

am besten einfach nur die Daten abfragen, die du brauchst

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
thx - hab ich mir schon durchgeschaut, aber ich seh mich nicht wirklich raus.

Ich hätte zB eine Abfrage
Code: PHP
$query_ready = mysql_query("SELECT * FROM $table_todo
WHERE `status` LIKE 'erledigt' AND content_id = 0 
ORDER BY `done_datetime` DESC");

die wird in einer while-Schleife aufgefangen & ausgegeben:
Code: PHP
 
while($zeile_r = mysql_fetch_assoc($query_ready)) {
  echo "<tr>";
  echo "<td>".$zeile_r['author']."</td>";
  echo "<td>".$zeile_r['datetime']."</td>";
  echo "<td>".$zeile_r['done_datetime']."</td>";
  echo "</tr>";
}

dann müsste ich in der Schleife nochmal 2 Abfragen an die DB machen, oder versteh ich da was nicht?

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Ich würd in der Datenbank einen Timestamp speichern, mit dem du dann per date("d m Y", timestamp) das Datumsformat ausgibst, welches du brauchst...

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4871
am besten ist, du speicherst es in der Datenbank als Typ datetime und wandelst es bei der Abfrage in einen Unix Timestamp um (iirc. UNIX_TIMESTAMP()). Um es in die DB zu schreiben kannst du die Funktion FROM_UNIXTIME() verwenden. So musst du dich nicht darum kümmern.

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
echo date("d.m.Y H:i:s", strToTime($data['date'])); // 02.01.05 13:14:15

hätte ich auch noch gefunden, sieht nicht so schlimm aus & wäre kompakt.

Aber den unix-timestamp hab ich bisher immer überlesen, obwohl er viel gelobt wird.
Oper8or & dio: so gemeint:?
http://www.schattenbaum.net/php/datum.php so werd ich das wohl machen!

Aja: warum in der Db trotzdem datetime?

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4871
Zitat von fatmike182
Aja: warum in der Db trotzdem datetime?
Ist doch aussagekräftiger als ein timestamp :).

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
hm - ok, werd ich mir nohc überlegen, ob ich gleich den unixtimestamp in die DB speicher oder beim Auslesen umwandel.

Aber das Format erschreint mir wirklich komfortabel - thx nochmal!

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Eine Erfahrung aus der Praxis: nimm datetime, weil du beim debuggen, sprich du schaust rein in die DB und kannst das Datum sofort erkennen, dir einfach wirklich was sparst. wenn du mal irgendein Problem hast und das Datum dabei für die relevant ist, verfluchst du dass es ein einfacher nicht aussagekräfter integer ist. Ich hab mich schon so oft darüber geärgert, dass es eine interne developer policy ist keine einfachen integers mehr zu verwenden. Ausser es kann mir eine mit einen gutem Grund gegenargumentieren :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz