datediff - Abfrage will nicht

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

  • datediff - Abfrage will nicht

    Hallo,

    Ich habe eine Abfrage erstellt, aber sie will einfach nicht funktionieren!

    PHP-Code:
    SELECT PRJSTAT.MONAT
    Sum((DateDiff('s',ANFANGSZEIT,ENDEZEIT)/3600)-PAUSE) AS SummeMonat
    PRJSTAT.MONAT
    PRJSTAT.PERSONAL_NR
    MITARBEITER.VORNAME
    MITARBEITER.NACHNAME
    PRJSTAT.PROJEKT_NR
    PRJSTAT.TEILPROJEKT_NR
    PRJSTAT.JAHRPRJSTAT.TPPOS
    FROM MITARBEITER INNER JOIN 
    (TAETIGKEIT INNER JOIN PRJSTAT ON (TAETIGKEIT.PROJEKT_NR PRJSTAT.PROJEKT_NR)
    AND (
    MONTH(TAETIGKEIT.DATUM) = PRJSTAT.MONAT)
    AND (
    YEAR(TAETIGKEIT.DATUM) = PRJSTAT.JAHR)
    AND (
    TAETIGKEIT.TEILPROJEKT_NR PRJSTAT.TEILPROJEKT_NR)
    AND (
    TAETIGKEIT.PERSONAL_NR PRJSTAT.PERSONAL_NR)
    AND (
    TAETIGKEIT.TPPOS PRJSTAT.TPPOS)) ON MITARBEITER.PERSONAL_NR PRJSTAT.PERSONAL_NR
    GROUP BY PRJSTAT
    .MONAT
    PRJSTAT.PERSONAL_NR
    MITARBEITER.VORNAME
    MITARBEITER.NACHNAME
    PRJSTAT.PROJEKT_NR
    PRJSTAT.TEILPROJEKT_NR
    PRJSTAT.JAHR
    PRJSTAT.TPPOS 
    Der Fehler liegt sicher bei der Funktion datediff
    -->
    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('s',ANFANGSZEIT,ENDEZEIT)/3600)-PAUSE) AS SummeMonat

    Ich habe die gleiche Abfrage in ACCESS ausgeführt, und hier bekomm ich das gewünschte Ergebnis.

    Weiss jemand, warum das in der mySQL Datenbank nicht will?

    Dank Euch
    tine
    Zuletzt geändert von tine_; 16.12.2004, 13:56.

  • #2
    1. brich deinen code um

    2. lies http://dev.mysql.com/doc/mysql/en/Da...functions.html

    3. finde dort die beschreibung zu datediff

    4. schaue nach, wieviel parameter du dem ding mitgeben darfst

    5. schaue nach, wieviel paramter du dem ding mitgibst

    6. erkenne den unterschied
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      auch du sollst das http://www.php-resource.de/forum/sho...threadid=47906 beachten

      IMHO heißt die Fkt date_diff
      EDIT:
      nein, sie heißt datediff, habe mit date_sub & Co. verwechselt

      Kommentar


      • #4
        Dank Euch, werde ich gleich befolgen!
        Jedenfalls sorry das der Thread im PHP Bereich ist, der sollte doch eher in das SQL Forum, oder?

        Kommentar


        • #5
          OffTopic:
          PHP-Forum? schau mal nach

          Kommentar


          • #6
            bedauerlicherweise habe ich festgestellt, das unser mySQL Server auf Version 4.0.18 steht, und die function DateDiff erst bei 4.1.1 hinzugefügt wurde.
            Kennt ihr eine alternative, um in einer Abfrage die Differenz zweier Uhrzeiten (TIME) zu ermitteln? Es muss in einer Abfrage geschehen, und nicht im php! Im php wäre es kein Problem!

            Kommentar


            • #7
              such auf der seite, die ich gepostet habe, mal nach UNIX_TIMESTAMP
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Wenn ich aber nun das Format auf TIME eingestellt habe, und als default 00:00:00 eingestellt habe, erkennt er es nicht!
                Also UNIX_TIMESTAMP wird für diese Format nciht unterstützt!
                Das ergebnis bei UNIX_TIMESTAMP(ANFANGSDATUM) AS VON wäre als Ergebnis "0"
                Zuletzt geändert von tine_; 16.12.2004, 15:33.

                Kommentar


                • #9
                  Original geschrieben von tine_
                  Wenn ich aber nun das Format auf TIME eingestellt habe, und als default 00:00:00 eingestellt habe, erkennt er es nicht!
                  und warum machst du das, anstatt unix_timestamp(endzeit)-unix_timestamp(anfangzeit) anzuwenden

                  Kommentar


                  • #10
                    das mache ich doch!
                    Ich habe eben meinen vorherigen Beitrag editiert!
                    Er liefert als Ergebnis 0!
                    Wenn ich aber UNIX_TIMESTAMP('01.01.2004') as VON Schreibe, bekomme ich den entsprechenden Teitstempel geliefert!

                    Kommentar


                    • #11
                      weil unix_timestamp eben andere Formate erwartet. Wenn du nur die Zeit hast, dann kannst du mal mit Pseudo-Datum arbeiten, etwa so:

                      select unix_timestamp('2004-12-16 '+anfangzeit) ... bei einer Differenz hebt sich den Pseudoteil ohnehin auf (Uhrzeit am gleichen Tag vorausgesetzt)

                      wenn das Datum in anderen Spalten stehen, dann kannst du auch:

                      select unix_timestamp(colyear+'-'+colmonth+'-'+colday+' '+anfangzeit) ...

                      sei doch mal etwas kreativ

                      Kommentar

                      Lädt...
                      X