Ankündigung

Einklappen
Keine Ankündigung bisher.

Defaultwert NOW() -- geht das?

Einklappen

Neue Werbung 2019

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

  • Defaultwert NOW() -- geht das?

    Hallo,

    kann ich dem Default-Wert eines DATE-Felds irgendwie sowas wie NOW() oder CURRENT_DATE() geben, damit der Zeitpunkt der Erstellung eines Datensatzes festgehalten wird?

    Schneiderlein



    PS: Ich weiß, daß das auch das erstellende PHP-Skript könnte.

  • #2
    gute frage.

    Zitat von http://www.little-idiot.de/mysql/mysql-110.html
    Bei DATE und TIME Typen ist dies der Startwert dieses Typs
    aber was heißt das schon ..
    [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

    Kommentar


    • #3
      Ich glaube nicht, dass das für date- oder datetime-Attribute geht, du kannst ja bei "CREATE TABLE" keine Funktionen angeben. Wenn du hingegen ein timstamp-Attribut als "not null" definierst, wird bei einem Insert automatisch die aktuelle Zeit gespeichert.
      Gruss
      L

      Kommentar


      • #4
        Ich glaube nicht, dass das für date- oder datetime-Attribute geht
        Schade eigentlich. Das TIMESTAMP-Feature nützt mir hier ja deshalb nichts, weil ich das Erstellungsdatum für immer und ewig in Stein meißeln will

        Kommentar


        • #5
          Zitat von tapferesschneiderlein
          Ich glaube nicht, dass das für date- oder datetime-Attribute geht
          Schade eigentlich. Das TIMESTAMP-Feature nützt mir hier ja deshalb nichts, weil ich das Erstellungsdatum für immer und ewig in Stein meißeln will
          Dann gebe dieses beim Insert an,

          INSERT INTO Tabelle(Name,CreateDate,Weiteres) VALUES('Werauchimmer',NOW(),'Wasauchimmer')

          Kommentar


          • #6
            Zitat von tapferesschneiderlein
            Schade eigentlich. Das TIMESTAMP-Feature nützt mir hier ja deshalb nichts, weil ich das Erstellungsdatum für immer und ewig in Stein meißeln will
            was selbstverständlich auch mit dem timestamp möglich ist.
            Gruss
            L

            Kommentar


            • #7
              @DiBo33

              Zitat von DiBo33
              Dann gebe dieses beim Insert an
              Zitat von tapferesschneiderlein
              PS: Ich weiß, daß das auch das erstellende PHP-Skript könnte

              @lazydog

              was selbstverständlich auch mit dem timestamp möglich ist.
              ???

              Kommentar


              • #8
                Zitat von tapferesschneiderlein
                @DiBo33

                Zitat von DiBo33
                Dann gebe dieses beim Insert an
                Zitat von tapferesschneiderlein
                PS: Ich weiß, daß das auch das erstellende PHP-Skript könnte
                Worauf ich hinaus wollte, benutze beim Insert keine PHP-Zeitfunktion sondern die MySQL-Funktion

                @lazydog

                was selbstverständlich auch mit dem timestamp möglich ist.
                ???
                Achtung, das erste Timestamp-Feld wird von MySQL als Aktuallisierungs- und nicht Erstellungs-Anzeige benutzt.

                Kommentar


                • #9
                  Code:
                  create table tabelle
                  {
                       feld1 ....
                       ...
                      creatdate timestamp not null,
                      ....
                  }
                  und beim nächsten
                  Code:
                  insert into tabelle (feld1, ...) values (..., ....)
                  hast du das aktuelle Datum in creatdate, sofern du nichts anderes einfügst
                  Gruss
                  L

                  Kommentar


                  • #10
                    @l
                    Daraus werde ich gerade – offen gesagt – nicht schlau. Was meinst Du mit »hast du das aktuelle Datum ... sofern du nichts anderes einfügst« und wie verträgt sich das mit
                    weil ich das Erstellungsdatum für immer und ewig in Stein meißeln will
                    was selbstverständlich auch mit dem timestamp möglich ist.

                    Kommentar


                    • #11
                      With one exception, a DEFAULT value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE. The exception is that you can specify CURRENT_TIMESTAMP as the default for a TIMESTAMP column as of MySQL 4.1.2. See section 12.3.1.2 TIMESTAMP Properties as of MySQL 4.1. If no DEFAULT value is specified for a column, MySQL automatically assigns one, as follows. If the column can take NULL as a value, the default value is NULL. If the column is declared as NOT NULL, the default value depends on the column type:

                      * For numeric types other than those declared with the AUTO_INCREMENT attribute, the default is 0. For an AUTO_INCREMENT column, the default value is the next value in the sequence.
                      * For date and time types other than TIMESTAMP, the default is the appropriate ``zero'' value for the type. For the first TIMESTAMP column in a table, the default value is the current date and time. See section 12.3 Date and Time Types.
                      * For string types other than ENUM, the default value is the empty string. For ENUM, the default is the first enumeration value.

                      BLOB and TEXT columns cannot be assigned a default value.

                      http://dev.mysql.com/doc/mysql/en/CREATE_TABLE.html

                      Kommentar


                      • #12
                        Aaaaaaaaah: Die dem ersten folgenden TIMESTAMP-Felder besitzen auch die Eigenschaft, beim Erstellen den aktuellen Zeitpunkt festzuhalten, ändern sich später bei den Updates aber nicht mehr.


                        Edit:
                        Zitat von Handbuch
                        TIMESTAMP-Spalten abgesehen von der ersten können ebenfalls auf das aktuelle Datum und die aktuelle Zeit gesetzt werden. Setzen Sie die Spalte einfach auf NULL oder auf NOW().
                        Wenn ich die Spalte beim INSERT nicht mit angebe (was ich ja will), wird sie offensichtlich als NULL interpretiert und somit der aktuelle Wert gesetzt.

                        Kommentar

                        Lädt...
                        X