[MySQL 3.23.X] Zeitintervall rechnen

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

  • [MySQL 3.23.X] Zeitintervall rechnen

    Hallo, ich hab da ein kleines Problem.

    Folgende Tabellenstruktur [log]

    ________________________________
    session_id | date |
    ________________________________

    xxxxxxxxx1 |2003-03-09 14:26:45 |
    ________________________________

    xxxxxxxxx1 |2003-03-09 14:26:48 |
    ________________________________

    xxxxxxxxx2 |2003-03-09 14:26:49 |
    ________________________________

    Nun möchte ich das Zeitintervall zwischen den erstem und letzen Datensatzes einer ID(session_id) anzeigen lassen . Ich will das aber möglichst in einem Query haben.

    Bis jetzt lässt sich das lösen, indem ich 2 selects mache. Den ersten für das Anfangsdatum und den zweiten für das Enddatum einer ID.

    Also Select unix_timestamp(date),session_id from log order by date asc/desc.

    Danach dividiere ich ich den letzten DS mit dem ersten DS und habe das Intervall. Das sind mir aber zu viele Querys. Wie kann ich das nicht nur eleganter sondern auch effezienter lösen ? Ich bedanke mich schon im vorhinein um eine Antwort

  • #2
    PHP-Code:
    SELECT 
        
    (
            
    UNIX_TIMESTAMPMAXdatum ) ) - UNIX_TIMESTAMPMINdatum ) ) 
        ) 
    datdiff
        FROM 
    `tabelle
        
    WHERE 
            sessionid 
    '4711' 
    probier mal ^^
    Kissolino.com

    Kommentar


    • #3
      Werd ich probieren. Hmm, hört sich sehr vielversprechend an.. :P.
      Die datdiff Funktion kannt ich noch nicht.


      Edit . jetzt hab ichs getestet. Schaut jetzt so aus. Vielen Dank nochmal. hat meine Performance um einiges gesteigert ( 70000 Datensätze ! :ü)


      PHP-Code:
      $sql_count_session_id=mysql_query("SELECT COUNT(distinct session_id) as count FROM log WHERE month(serverdatum)='$month'");
      while (
      $row=mysql_fetch_array($sql_count))
      {
      $count=$row[count];
      }

      for(
      $i=1;$i<=$count;$++)
      {

      $sql_time_diff=mysql_query("SELECT (
              UNIX_TIMESTAMP( MAX(serverdatum) ) - UNIX_TIMESTAMP( MIN(serverdatum) ) ) datdiff
          FROM `log` 
          WHERE 
              session_id = '
      $i'")

      Zuletzt geändert von vanhoi; 11.03.2004, 11:13.

      Kommentar


      • #4
        Original geschrieben von vanhoi
        Die datdiff Funktion kannt ich noch nicht.
        datdiff ist auch keine Funktion ... sondern ein Alias ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Muss man Aliases nicht mit "as" definieren?

          PHP-Code:
          SELECT vielzulangerfeldname AS kurz FROM tabelle WHERE soundso=

          Kommentar


          • #6
            kann ... nicht "muss"
            Kissolino.com

            Kommentar


            • #7
              Genau genommen kann er ... sollte aber nicht ... weil nicht ANSI-konform ... !
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar

              Lädt...
              X