Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Das Kreuz mit dem Datum...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Das Kreuz mit dem Datum...

    Hallo liebe Profis!

    Mich würde sehr interessieren, wie Ihr das Problem mit dem Speichern eines Datums in MySQL löst. Ich weiß, es gibt Unmengen von Tutorials, Forenthreads und Manuals zum Thema. Ich bin mir aber noch nicht ganz darüber im Klaren, was die beste Methode ist.

    Zunächst, was ich erreichen will:
    • In einer MySQL-Tabelle wird durch den User ein neuer Kunde angelegt
    • Es soll die exakte Zeit mit gespeichert werden, zu der dieser Kunde angelegt wurde
    • In einer Suchabfrage soll der User die Möglichkeit haben, nach Kunden zu suchen, die an einem bestimmten Tag erstellt wurden

    Mein bisheriger Lösungsansatz:
    • Einfach den UNIX-Timestamp (time()) mit speichern.

    Problem:
    • Bei der Suche müsste der User immer die Minuten und Sekunden mit angeben, wenn er nach dem Erstellungsdatum sucht, was unsinnig wäre.

    Jetzt bin ich am Grübeln:
    • 2 Felder anlegen, eines in der UNIX-Timestamp mit und eines wo er ohne Minuten und Sekunden gespeichert wird*? Dazu müsste zum einen jedes mal der UNIX-Timestamp von den Minuten und Sekunden "befreit" werden und zum zweiten wie gesagt zwei Felder in der Tabelle belegt werden...scheint mir zu umständlich u. Resourcen-intensiv...
    • Das mit dem UNIX-Timestamp ganz vergessen und lieber die DATE/TIMESTAMP-Funktion von MySQL nehmen? Nachteil: Ich habe gelesen, dass dann die Sortierbarkeit nicht so gut/einfach sein soll wie beim UNIX-Timestamp...

    Puuuh, was machen?!

    DANKE!
    Lisa
    _________
    * Das mit Minuten und Sekunden, weil ich anderswo im Skript dann doch die genaue Zeit brauche.

  • #2
    Wenn Du einen Unix timestamp verwendest, kannst Du mit >= und < arbeiten bzw BETWEEN
    PHP-Code:
    $lower strtotime('2008-12-27');
    $upper strtotime('+1 day'$lower);

    $sql "
      SELECT
        ...
      WHERE
        yourdatefield BETWEEN 
    $lower AND $upper
    "

    Wenn Du in der MySQL Tabelle ein DateTime/Timestamp Feld hast, kannst Du mittels Date() den Datumsanteil extrahieren
    PHP-Code:
    $sql "
      SELECT
        ...
      WHERE
        Date(yourdatefield) = '2008-12-27'
    "

    Kommentar


    • #3
      Hi David!

      Danke für Deine Antwort! Ich habe mich jetzt für die MySQL-Date-Variante entschieden.

      Das aktuelle Datum, an dem der Kunde angelegt wurde, speichere ich so:
      PHP-Code:
      INSERT INTO kunden  (kd_createdVALUES (NOW())
      //Und natürlich noch alle anderen Felder, die gespeichert werden sollen
      // kd_created ist vom Typ DATETIME 
      Nach Datum suchen und sortieren und formartieren, hab ich so gemacht:
      PHP-Code:
      <?php
      require('dbconnect.php');

      $abfrage "SELECT *, DATE_FORMAT(kd_created, '%d.%m.%y') AS 'de_date'  FROM kunden WHERE Date(kd_created) <= '2008-12-27' ORDER BY kd_created";
      $ergebnis mysql_query($abfrage);
      while(
      $row mysql_fetch_object($ergebnis))
         {
         echo 
      "$row->kd_nr - $row->kd_suchname - $row->de_date <br>";
         }
      ?>
      Ausgegeben wird dann:
      903108 - Müller - 25.12.08
      903109 - Weber - 26.12.08
      903110 - Hansen - 27.12.08
      Siehe auch:
      infos24 mysql > mysql Manipulationen mit Datumsangaben

      Kommentar

      Lädt...
      X