Ankündigung

Einklappen
Keine Ankündigung bisher.

Besser: Datum mit PHP oder MySQL?

Einklappen

Neue Werbung 2019

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

  • Besser: Datum mit PHP oder MySQL?

    Ich arbeite schon seit längerem mit PHP und MySQL, aber diesmal will ich eine Anfängerfrage stellen:

    Ich speichere meine Daten (ich meine die Mehrheit von Datum ^^) immer mit der PHP-Funktion time() in einem INT(10) Feld einer MySQL-Datenbank ab.
    Ich habe aber gerade in einem anderen Thread gelesen, dass es die MySQL-Funktion DATE_FORMAT gibt mit der man TIME, DATE oder TIMEDATE-Felder formatiert auslesen kann.

    Jetzt meine Frage: Welche der beiden Möglichkeiten ist besser in Hinsicht auf Performance bzw. auf Übersichtlichkeit.

    Ich finde die 2. Variante persönlich besser, aber einfacher ist es mit der time()-Funktion...

    Bin gespannt auf eure Meinung

  • #2
    Hallo SilentSight,

    was ist denn deiner Meinung nach "leichter" an der INT(10) + time()-Methode?

    Ich benutze immer den passenden MySQL-Datumstyp... damit kannst du dann alles machen was dir in den Sinn kommt (mit den MySQL-Datums-Funktionen)...
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      Naja, beim einfügen in die Tabelle muss ich bei der time()-Methode nur time() einfügen

      PHP-Code:
      mysql_query('INSERT INTO gb (date) VALUES ("'.time().'")'); 
      Danach kann ich es wieder mit der date()-Funktion richtig auslesen.

      Mit dem DATETIME-Typ habe ich es bis jetzt immer so gemacht:

      PHP-Code:
      mysql_query('INSERT INTO gb (date) VALUES ("'.$year.'-'.$month.'-'.$day.' '.$hour.':'.$minute.':'.$second.'")'); 
      Ich weiß nur die genau Reichenfolge nich mehr...
      Wenn du mir sagen kannst, wie das einfacher geht wäre ich dir sehr dankbar.

      Was ist in Hinsicht auf Performance besser?

      Kommentar


      • #4
        Wenn du das Feld mit date oder mit datetime definiert hast, dann machst du beim INSERT INTO einfach:
        ... VALUES ('$feld1',now(),'$feld3');
        [PHP]if ($var != 0) {
        $var = 0;
        }[/PHP]

        Kommentar


        • #5
          Also kann ich einfach in der Spalte, die den Typ DATETIME hat die Funktion NOW() zum füllen hernehmen?

          Was ist, wenn ich beispielsweise ein Geburtsdatum darin speichern möchte?

          Kommentar


          • #6
            Soweit ich weiß wird bei der Vereinbarung deiner Spalte mit dem Typ DATETIME, immer die momentane Zeit beim erstellen des jeweiligen Eintrages gespeichert oder liege ich da falsch?
            "Je größer die Insel des Wissens, desto länger die Küste der Verzweiflung!"

            Kommentar


            • #7
              Kann ich leider grad nich ausprobieren...
              Aber selbst, wenn nicht, solange es mit NOW() geht bin ich auch zufrieden.

              Aber wie kann ich ein anderes Datum leicht speichern?

              Kommentar


              • #8
                ein anderes datum oder einen geburtstag? das ist ganz einfach eine normale text information wie der name oder die schuhgröße. timestamp ist eine funktion zur beschreibung solcher informationen.

                fürgwöhnlich nimmt man ja den typ timestamp des feldes date und dem attribut ON UPDATE CURRENT_TIMESTAMP für mysql


                PHP-Code:
                SELECT DATE_FORMATdate'%d/%m/%Y' ) AS date,content,title,ID FROM cms_article WHERE page 1 ORDER BY `dateDESC LIMIT 0,5"; 
                dein feld date kannst du dann formatieren wie du magst.

                Kommentar


                • #9
                  ein anderes datum oder einen geburtstag? das ist ganz einfach eine normale text information wie der name oder die schuhgröße. timestamp ist eine funktion zur beschreibung solcher informationen.

                  fürgwöhnlich nimmt man ja den typ timestamp des feldes date und dem attribut ON UPDATE CURRENT_TIMESTAMP für mysql


                  PHP-Code:
                  SELECT DATE_FORMATdate'%d/%m/%Y' ) AS date,content,title,ID FROM cms_article WHERE page 1 ORDER BY `dateDESC LIMIT 0,5"; 
                  dein feld date kannst du dann formatieren wie du magst.


                  nehmen wir gleich den rest zur ausgabe auch noch

                  PHP-Code:
                  $sql "SELECT DATE_FORMAT( date, '%d/%m/%Y' ) AS date,content,title,ID FROM cms_article WHERE page = 1 ORDER BY `date` DESC LIMIT 0,5";
                      
                  $result mysql_query($sql) OR die(mysql_error());
                      if(
                  mysql_num_rows($result)) {
                          while(
                  $row mysql_fetch_assoc($result)) {
                          
                  echo 
                  "<li><a href=\"?page=read&id=".$row['ID']."\" title=\"".$row['date']."\" class=\"internal\">".$row['title']."</a></li>";





                  was hab ich getan? alles doppelt?

                  Kommentar


                  • #10
                    Zitat von PHP4ever Beitrag anzeigen
                    Soweit ich weiß wird bei der Vereinbarung deiner Spalte mit dem Typ DATETIME, immer die momentane Zeit beim erstellen des jeweiligen Eintrages gespeichert oder liege ich da falsch?
                    Da liegst du falsch

                    Zitat von SilentSight Beitrag anzeigen
                    Kann ich leider grad nich ausprobieren...
                    Aber selbst, wenn nicht, solange es mit NOW() geht bin ich auch zufrieden.

                    Aber wie kann ich ein anderes Datum leicht speichern?
                    Ich weiß nicht was an:
                    Code:
                    INSERT INTO birthdays (birthday) VALUES ("1950-10-10");
                    nicht leicht ist?

                    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                    Kommentar


                    • #11
                      Naja, schwer is des wirklich nich...
                      Hab wohl vorhin nich gut überlegt...
                      Sonst musste ich halt dasselbe mit mktime() erledigen...
                      OK, ich finde diese Lösung auch gut, aber was ist der Vorteil gegenüber time()-date()-Variante?
                      Und welche ist in Hinsicht auf Performance besser?

                      Kommentar


                      • #12
                        Zitat von SilentSight Beitrag anzeigen
                        OK, ich finde diese Lösung auch gut, aber was ist der Vorteil gegenüber time()-date()-Variante?
                        Die Frage ist doch eher: Es gibt für Datum extra Datentypen in MySQL - wieso sollte man sie also nicht verwenden sondern irgendwas eigenes kreieren?
                        Schau dir einfach mal die Datums und Zeitfunktionen von MySQL an die du jetzt kinderleicht auf diese Spalten anwenden kannst:
                        MySQL :: MySQL 5.0 Reference Manual :: 11.6 Date and Time Functions

                        Und welche ist in Hinsicht auf Performance besser?
                        Bei der Performance macht es wohl keinen Unterschied.
                        Und überhaupt: Just build it, damn it!
                        Bei solchen Sachen würde ich mir wirklich keine Gedanken um die Performance machen...
                        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                        Kommentar


                        • #13
                          Ok, für MySQL gibt es halt auch ne Reihe von Funktionen...
                          Versteht mich bitte nich falsch, aber ich habe es mit der time()-Funktion gelernt und mich halt gefragt, warum ich dann die DATETIME o. ä. Felder hernehmen soll...
                          Ihr habt mir jedenfalls mit den Links, die ich eigentlich auch selber hätte finden können, weitergeholfen.

                          Danke, SilentSight

                          Kommentar


                          • #14
                            Also ich für meinen teil nehme lieber einen Timestamp.

                            damit kann man einfach besser rechnen und ist äusserst nützlich wenn man Foren oder was weiß ich was Programmiert, dass in mehreren Sprachen und Zeitzohnen arbeiten soll.
                            [B]Mfg Tomtaz[/B]
                            [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

                            Kommentar


                            • #15
                              Genau, das rechnen!
                              Gut, dass du es ansprichst...
                              Muss ich dann eigentlich bei DATETIME oder ähnlichen Spalten-Typen immer explode()en oder oder geht das auch anders?

                              Kommentar

                              Lädt...
                              X