Antworten auf deine Fragen:
Neues Thema erstellen

Erledigt - Datenbank Datum formatierung

MasterT

Nicht mehr ganz neu hier

Hallo,
ich Arbeite gerade an einem Script für einen Freund. Dieser hat 17.000 Einträge mit Microsoft Works via Hand in die Datenbank angelegt und das über Jahre. Das Datum das er eigegeben hat wurde aber nie formatiert, so das hier und da das Format nicht DD.MM.YYYY entspricht. Ich versuche nun diese 17.000 Einträge mit der Spalte datum in das Format DD.MM.YYYY

Ich weiß aber nicht wie ich das ganze angehen soll.

Hatte jemand mal das selbe Problem oder kann mir helfen?

Lh
Phil
 

gmartino27

Noch nicht viel geschrieben

Verstehe ich nicht ganz..
Du willst die daten jetzt in mysql importieren der hast du die daten bereits importier?

Alsoerwartest du ein sql befehl?
 

Caesarion2004

Aktives Mitglied

Verrätst Du uns bitte auch die Lösung (sofern möglich), falls jemand mal auf der Suche nach einer Lösung für ein ähnliches Problem hierüber stolpert? :)
Sonst für verzweifelte User immer so frustrierend...
Merci.
 

MasterT

Nicht mehr ganz neu hier

Mit diesem Code läd man das alte datum aus der Spalte und schreibt es formatiert in eine neue Spalte.

Hat man das Problem dass das alte Datum immer in verschiedenen Formaten eingetragen wurde, so sucht man einfach in der neuen spalte nach dem datum 0000-00-00. Diese Datensätze müsst ihr dann leider mit der Hand korregieren.

Nachtrag: Es ist wichtig das die Spalten mit einer ID versehen sind, um sie eindeutig identifizieren zu können.

PHP:
set_time_limit(200);
include('_php/datenbank.php');
function date_german2mysql($date)
{
  $d = explode(".",$date);
  return sprintf("%04d-%02d-%02d", $d[2], $d[1], $d[0]);
}
$sql = mysqli_query(db_connect(),"SELECT `id`, `datum` FROM `daten`");
$anzahl = mysqli_num_rows($sql);
while($row = mysqli_fetch_assoc($sql)) {
   $newdate = date_german2mysql($row['datum']);
   mysqli_query(db_connect(),"UPDATE `daten` SET neuesdatum='".$newdate."' WHERE id='".$row['id']."'") or die(mysqli_error(db_connect()));
}

Lg
Phil
 
Zuletzt bearbeitet:

MasterT

Nicht mehr ganz neu hier

nachdem du schon php verwendest hätte ich auch die dafür gedachten funktionen verwendet (siehe http://php.net/manual/en/book.datetime.php)

kann dir aber jetzt nicht sagen ob die funktion mit jedem input umgehen kann ( new DateTime(String dt); ).
Wenn du dir doch nicht sicher bist, wieso schreibst du das dann?

Genau das kann diese Funktion eben nicht. Diese ist für timestamps gedacht.

Lg
Phil
 

Curanai

Aktives Mitglied

Guten Abend, ich bin mit obiger PHP-Lösung nicht vollends einverstanden. Die hat funktioniert und das nötige getan - kein Problem. Aber vielleicht liest es ja nochmal wer (wobei ich glaube, dass ich nicht zum ersten Mal das hier ins Forum schreiben). Und zwar ...

17.000 Datensätze sind ja schon nicht schlecht - ich unterstelle, dass der Einsatz von LIMIT beim Update die gleiche Aktualisierung deutlich schneller durchgeführt hätte.

Grund: LIMIT ist nicht nur Begrenzer, sondern zeitgelcih auch Abbrecher, wenn ein Datensatz passend aktualisiert wurde. Jetzt läuft der UPDATE-Befehl stets über alle 17.000 Zeilen, da er noch was finden könnte ... also Befehle auf der Datenbank immer so weit wie möglich eindampfen (= Performance). Ticks sind da (super!), aber auch unnötige single-quotes (= WHERE clause) - aber halb so wild. :)

Wenn ich noch eine persönliche Randnotiz vergeben darf: Der Source ist für so einen kurzen Schnippsel schlecht lesbar. Es gibt eine Extra-Funktion für den explode(), aber bei den DB-Commands nix und die Befehle selbst sind eeeeewig über horizontales Scrollen zu lesen. Da gibt es ein paar schöne Empfehlungen für die Schreibweise (habe es selbst länger ignoriert, bis mir mein knapp 300-Spalten Updater um die Ohren flog und die Fehlersuche länger dauerte im Spaghetti-Code). Ich kann also nur empfehlen, gleich mit Einrückungen, Zeilenumbrüchen etc. zu arbeiten.

Habt noch einen schönen Abend.


EDIT: Ahhh ... tut mir leid - Posting wurde bei mir noch als "neu" angezeigt. Wollte es nicht pushen ... !
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.611
Beiträge
1.538.342
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben