Bernd: Datum speichern

Hallo,

ich möchte das aktuelle Datum in einer MySQL Tabelle speichern

date("Y-m-d");

In der Datenbank kommt es so an

2005-03-20

Das Feld hat den Typ "date"

Woher kommt das Jahr 2005?

  1. Hallo Bernd,

    ich möchte das aktuelle Datum in einer MySQL Tabelle speichern

    date("Y-m-d");
    

    Warum verwendest du nicht in MySQL NOW()?

    In der Datenbank kommt es so an

    2005-03-20

    Das Feld hat den Typ "date"

    Woher kommt das Jahr 2005?

    Von deinem Server. Was gibt dir denn das aus?

    echo date('Y-m-d');
    

    Viele Grüße
    Robert

    1. Hallo Robert,

      date("Y-m-d");
      

      Warum verwendest du nicht in MySQL NOW()?

      ich verwende zwar lieber meine eigenen Zeitformatierungen, und bin mir daher auch nicht so sicher, aber müsste es bei der gewünschten Vorstellung von Bernd nicht eher CURDATE() sein?

      Gruss
      Henry

      1. Tach!

        Warum verwendest du nicht in MySQL NOW()?

        ich verwende zwar lieber meine eigenen Zeitformatierungen,

        Formatierungen benötigt man nur, wenn man einen Wert in eine literale oder menschenlesbare Form bringen möchte. Solange nichts anderes angegeben ist, liefern die Datums- und Zeit-Funktionen Roh-Werte in irgendeiner internen Darstellung. Und solange die nicht in einen String-Kontext gebracht werden, müssen sie auch nicht formatiert werden. Es gibt also keine Formatierprobleme, wenn man Funktionen verwendet, die einen DATE-, TIME- oder DATETIME-Wert liefern und diese Werte an andere Empfänger gibt, die einen solchen Wert haben wollen.

        aber müsste es bei der gewünschten Vorstellung von Bernd nicht eher CURDATE() sein?

        Das ist eigentlich egal, NOW() liefert einen DATETIME-Wert, das Feld sei vom Type DATE, da landet der DATE-Anteil im Feld und der Rest wird ignoriert. Es gibt nur eine kleine Warnung, dass Daten abgeschnitten werden, die man aber meist aus PHP heraus nicht weiter abfragt. Wenn man es genau nehmen möchte, kann man natürlich auch CURRENT_DATE, CURRENT_DATE() oder CURDATE() nehmen, dann auch ohne Warnung.

        dedlfix.

        1. Hallo dedlfix,

          Formatierungen benötigt man nur, wenn man einen Wert in eine literale oder menschenlesbare Form bringen möchte.

          Da habe ich mich wohl blöd ausgedrückt. Mit Formatierung meinte ich was anderes. Die älteren hier kennen wahrscheinlich noch die Zeitumrechnungsproblematiken von früher als noch der Unixtimestamp, der Ausgangsschlüssel für alles war, der aber natürlich begrenzt in seiner Range war. Gerade bei historischen Sachen oder auch nur Geburtsdaten gabs da schon mal viele Fragen. Was im Einzelnen das Ausschlaggebende war, weiss ich nicht mehr, allerdings nutze ich seitdem einen Integerwert basierend auf YmdHis und entsprechender Funktionen für meine Bedürfnisse. Dass sich seitdem einiges geändert hat, ist natürlich klar und wollte auch keine Empfehlung für meine Vorgehensweise geben.

          aber müsste es bei der gewünschten Vorstellung von Bernd nicht eher CURDATE() sein?

          Das ist eigentlich egal, NOW() liefert einen DATETIME-Wert, das Feld sei vom Type DATE, da landet der DATE-Anteil im Feld und der Rest wird ignoriert. Es gibt nur eine kleine Warnung, dass Daten abgeschnitten werden, die man aber meist aus PHP heraus nicht weiter abfragt. Wenn man es genau nehmen möchte, kann man natürlich auch CURRENT_DATE, CURRENT_DATE() oder CURDATE() nehmen, dann auch ohne Warnung.

          Ah ok, habs mir jetzt mal genauer angeschaut, now() ist also sozusagen das Mutterschiff 😉

          Gruss
          Henry

  2. Tach!

    ich möchte das aktuelle Datum in einer MySQL Tabelle speichern

    Dafür gibt es NOW und ein paar Aliase.

    date("Y-m-d");
    

    In der Datenbank kommt es so an

    2005-03-20

    Bevor es da ankommt, wird das ja erst noch in PHP verarbeitet. Dort solltest du zuerst nachverfolgen, ob die Funktion date() den richtigen Wert ergibt und ob er unverändert im SQL-Statement oder bei der Datenübergabe per Prepared Statement ankommt.

    Woher kommt das Jahr 2005?

    Der 20.3. ist übrigens auch nicht gerade heute.

    dedlfix.

    1. Hallo,

      Woher kommt das Jahr 2005?

      Der 20.3. ist übrigens auch nicht gerade heute.

      heute ist der 5.3.2018; offenbar macht jemand aus dem 5. das Jahr 2005, der 3. scheint ok, und aus 2018 wird dann der 20.…

      Gruß
      Kalk

      1. Hallo,

        Woher kommt das Jahr 2005?

        Der 20.3. ist übrigens auch nicht gerade heute.

        heute ist der 5.3.2018; offenbar macht jemand aus dem 5. das Jahr 2005, der 3. scheint ok, und aus 2018 wird dann der 20.…

        Das erinnert mich an einen Komilitonen der mal schrieb ".. das Ergebnis ist in Etwa 13.65 " Worauf der Dozent antwortete und darunter schrieb: Und Ihre Note ist in Etwa ne fünf 😉

        (sechsen gabs damals noch nicht)

        Ansonsten: Datum runden -- interessante Sache! Richtig runden will gelernt sein -- Runden auch Sie ihre Termiten! Das runde Datum, das ist die Geschäftsidee, natürlich zum runden Preis versteht sich 😉