Frage zu Datumsfunktionen

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

  • Frage zu Datumsfunktionen

    Hallo zusammen,

    in meiner Datenbank logge ich Start und Endzeitpunkt einer Session als DateTime im Format YYYY-MM-TT hh-mm-ss

    Jetzt würde ich gerne wissen wie lange jemand eingeloggt war.

    Im Handbuch steht, daß solche Strings automatisch in Zahlen umgewandelt werden, wenn man damit rechnet.

    Mein PHP Script mach also simpel folgendes:

    $dauer=$stop-$start;
    echo("$dauer");


    Blöderweise tut sich gar nix....

    Was mach ich falsch? Oder hab ich einfach was falsch verstanden?

    THX
    mal wieder auf Books for free! vorbeigeschaut?
    Jetzt mit mehr als 1200 Texten / Tutorials
    Wir veröffentlichen auch eure Texte!

  • #2
    Speichere den Start und Endpunkt des einloggens als timestamp. Dann kannst du dies einfach so subtrahieren wie du es gemacht hast.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      Danke,

      das hatte ich mir als Alternative auch schon überlegt.

      Ich hab aber auch so schon ne Lösung gefunden:

      Logischerweise war im MYSQL Handbuch auch ne sql Funktion gemeint.

      Mit select id, start, stop, stop-start as dauer from blabla funktioniert das ganze auch!

      Trotzdem danke!!!
      mal wieder auf Books for free! vorbeigeschaut?
      Jetzt mit mehr als 1200 Texten / Tutorials
      Wir veröffentlichen auch eure Texte!

      Kommentar


      • #4
        OK.
        mfg
        Günni


        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
        City-Tiger - Online durch die Straßen tigern...

        Kommentar


        • #5
          lass die Berechnung doch direkt die DB machen
          Code:
          select
          	SEC_TO_TIME(UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)) zeit
          from
          	meineTabelle
          order by
          	zeit desc
          macht dir die schöne Ausgabe in Stunden und Minuten
          absteigend sortiert

          25:23:01
          23:00:45
          ...
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            Super,

            das sec_to_time kannte ich noch nicht, funzt aber prima!


            Danke für eure Hilfe!!


            Eine andere Frage zu diesem Thema:

            Ich möchte die Zeit mitloggen die jemand bei mir eingeloggt ist.

            Wenn er sich ordnungsgemäß ausloggt klappt das alles ja auch wunderbar.

            Wie kann ich das lösen, wenn er simpel den Browser schließt?

            Ich steh da momentan n bißl aufm Schlauch....
            mal wieder auf Books for free! vorbeigeschaut?
            Jetzt mit mehr als 1200 Texten / Tutorials
            Wir veröffentlichen auch eure Texte!

            Kommentar


            • #7
              mach ne neue spalte LastAction, da schreibst du immer NOW() rein, wenn der user auf nen link klickt oder ein formular abschickt oder oder oder

              dann loggst du die aus, wo Now()-LastAction größer als ein von dir definierter Zeitraum ist
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                *VERSCHIEB* nach sql.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Rechnen mit datetime?

                  leider gibts doch ein prob mit sec_to_time bzw allgemein mit dem Rechnen mit Daten

                  in einer Tabelle speichere ich folgende Werte:

                  start | stop
                  2003-04-24 09:55:52 | 2003-04-24 10:07:16

                  Die Spalten haben logischerweise den Typ datetime.


                  Mit:

                  $statistik=mysql_query("SELECT username, start, stop, sec_to_time(stop-start) as dauer FROM statistik, user where user.id=userid order by start");

                  hole ich mir die Differenz der beiden Werte als dauer.

                  Blöderweise zeigt mir mein Script aber jetzt als Differenz
                  01:26:04 an. Warum rechnet das so offensichtlich falsch?

                  Danke für eure Hilfe
                  mal wieder auf Books for free! vorbeigeschaut?
                  Jetzt mit mehr als 1200 Texten / Tutorials
                  Wir veröffentlichen auch eure Texte!

                  Kommentar


                  • #10
                    weil du das nicht so gemacht hast.

                    SEC_TO_TIME(UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)) zeit


                    die DATETIME muss auch erst einmal umgewandelt werden.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Hallo!


                      Wie kann ich die Dauer aus der Subtraktion zweier DATETIME-Felder in Tagen anzeigen lassen?

                      cu, Niels

                      Kommentar


                      • #12
                        [MySQL 4.1] Sorry, selbst gefunden

                        Sorry, habe im MySQL-Manual die Kommentare nicht gelesen; jetzt geht's so:

                        CREATE TABLE dauer
                        SELECT anr, aklas, kenz, abdat, aedat, TO_DAYS(aedat) - TO_DAYS(abdat) AS Dauer
                        FROM `kzmverh`
                        order by Dauer asc;


                        cu, Niels

                        Kommentar

                        Lädt...
                        X