Ankündigung

Einklappen
Keine Ankündigung bisher.

date-Datentyp in MySQL und in PHP verwenden

Einklappen

Neue Werbung 2019

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

  • date-Datentyp in MySQL und in PHP verwenden

    Hallo Community,

    habe Schwierigkeiten den Mehrwert von date als Datentyp in einer MySQL-DB verstehen zu können. Vielleicht könntet ihr mir helfen hier Licht ins Dunkle zu bekommen?! Jedes Forum empfiehlt ja ein Datum nicht als VARCHAR sondern als DATE-Typ in der DB zu speichern, um die tollen Funktionen und Methoden von PHP in Bezug auf date nutzen zu können, die allesamt bei mir irgendwelche Fehler auswerfen.

    Folgende Situation:
    Ich speichere mit folgendem SQL-Befehl aus einem PHP-Script in eine MySQL-DB ein Datum, welches als date-Typ gespeichert wird:

    PHP-Code:
    $date date("Y-m-d");
    $sql "INSERT INTO tabelle (date) VALUES ('$date')";
    $eintragen mysqli_query($db$sql); 
    Das kommt hervorragend in der DB an und steht in meiner Tabelle in der Spalte date in folgendem Format: 2018-12-06

    Wenn ich nun dieses Datum über ein SQL-Statement mit folgender Anweisung abgfrage:
    PHP-Code:
    $sql "SELECT date FROM tabelle WHERE ...dies und das...
    $date = $pdo->query($sql)->fetch(); 
    ...das Ganze dann mit...
    PHP-Code:
    print_r ($date); 
    ...ausgebe (weil echo funktioniert ja nicht), erhalte ich allerdings folgende Ausgabe:

    Array([date]=>2018-12-06[0]=>2018-12-06)

    Wie schaffe ich es nun, dieses Array
    1. in ein deutsches Format á la 06.12.2018 auszugeben
    2. daraus einen einzelnen String zu machen, um diesen dann in eine Variable innerhalb des PHP-Scripts speichern zu können, so dass damit weitere SQL-Statements á la SELECT dies FROM tabelle WHERE date = '".$date."'; ausführen kann.

    Ich hoffe, ich konnte mich halbwegs verständlich ausdrücken?

  • #2
    PHP-Code:
    echo $date['date']; 
    Gibt das Datum aus.
    Wenn du jetzt da am Format rumbasteln willst kannst du die DateTime-Klasse (http://php.net/manual/de/class.datetime.php) nehmen.
    Oder auch:
    PHP-Code:
    echo date('d.m.Y'strtotime($date['date'])); 
    http://php.net/manual/de/function.date.php
    http://php.net/manual/de/function.strtotime.php

    Frage 2 dürfte ich ganz oben schon beantwortet haben, wenn ich sie richtig verstanden habe.

    Kommentar


    • #3
      Das sind doch völlig verschiedene Sachen.

      1. Datum als date-Typ

      Was machst du denn, wenn du mal mit den Daten arbeiten willst? Zeiträume berechnen, Zeitabstände pro Zeile auswerten etc., alles was man halt im WHERE machen kann, guck dir einfach an was MySQL da anbietet:

      https://dev.mysql.com/doc/refman/8.0...functions.html

      willst du dann eine Million Datensätze in den Speicher ziehen und das dann mit PHP filtern? Und dann hast du nicht mal einen Index.

      2. dein Array wertest du genau so aus wie sonst auch. Wo ist denn da jetzt der Unterschied? Wenn du vorher deutsches Format gespeichert hast, kannst du damit ja nicht mal in der DB rechnen. Und das englische Format kannst du ganz normal über die DateTime-Klasse instanziieren. Und dann mit ->format() ausgeben lassen wie du willst. Oder du machst das halt direkt in der DB, die Funktionen stehen ja oben.

      3. Und dein WHERE date = xyz kannst du ja vorher schon machen, mit nem JOIN.
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        http://php.net/manual/de/class.intldateformatter.php

        Kommentar


        • #5
          Siehe https://dev.mysql.com/doc/refman/8.0...on_date-format

          Code:
          SELECT DATE_FORMAT(`date`, '%d.%m.%Y') AS `date` FROM mytable

          Kommentar

          Lädt...
          X