sandro: SQL: FORMAT-Funktion bei Abfragen?

Guten Morgen!

Ich habe eine Tabelle, welche das Feld FromDateTime beinhaltet.
Dieses Feld beinhaltet folgendes: Datum + Uhrzeit:
Beispiel:
07.11.2003 08:00:00
In der Tabelle sind unter anderem auch EmployeID's....hier sind nur die EmployeID's und die FromDateTimes wichtig.

Nun möchte ich ein Select machen, welches nur die ZEIT der FromDateTimes ausgibt, und zwar die späteste, wo employeID = 6 ist und FromDateTime (nur datum!) = 07.11.2003.

Ich möchte dazu ein normales Select machen, und dann per SortOrder die späteste Zeit nehmen.
Da ich im Feld FromDateTime Datum und Zeit habe, muss ich vermutlich ein Format über die Felder laufen lassen. Ich wollte dies folgendermassen machen:

SELECT Format([Tree_Works.FromDateTime],'hh.nn.ss') AS Ausdr1
FROM Tree_Works
WHERE (((Format([Tree_Works.FromDateTime],'mm.dd.yyyy'))=#11/7/2003#) AND ((Tree_Works.EmployeID)=6));

Diese Abfrage gibt keinen Fehler aus, aber auch keine Werte! obwohl sie Werte ausgeben müsste, da in der DB werte mit dieser Abfrage übereinstimmen. Ich vermute, dass es an der eventuell falsch angewendeten Format liegt..ist aber nur eine Vermutung!

Kann mir da jemand weiterhelfen? sieht jemand das problem,oder kennt eine andere Lösung?

Vielen Dank im Voraus,
viele Grüsse, sandro

  1. Hi,

    ic weiss mysq hat so seine Eigenheiten welche auch Ich nicht alle kenne....

    SELECT Format([Tree_Works.FromDateTime],'hh.nn.ss') AS Ausdr1
    FROM Tree_Works
    WHERE (((Format([Tree_Works.FromDateTime],'mm.dd.yyyy'))=#11/7/2003#) AND ((Tree_Works.EmployeID)=6));

    Aber muss statt # nicht ein ' hin?

    Ich meine ja nur... auf Oracle wäre das so der Fall.

    Gruss Matze

    PS. Ist Dein alter thread zum Thema schon im Archiv?
        Falls nein dann bleib doch bitte dort.

    1. danke!

      ja mein alter thread ist schon im archiv...tut mir leid, aber den würde niemand mehr sehen..:-)

      ich habe es versucht, geht aber immer noch nicht...ich habe es im access zusammengestellt (die sql-syntax) und dort macht es beim datum automatich ein #...ob dies richtig ist, ist eine andere Frage :-)
      bin auch nicht so der sql-crack...überhaupt nicht!

      hmm...mal noch weiter suchen, eventuell finde ich was..aber grundsätzlich wäre sowas schon möglich,oder? format ist nicht nur zur ausgabe gedacht, sondern auch für die kriterien? d.h. kann ich format auch bei den "where" etc. brauchen, damit bei einem kriterium in einem datum+zeit feld z.B. nur auf die Zeit geachtet wird?

      Wenn dies nämlich nicht so ist, sind meine versuche sowieso für nichts...

      Hi,

      ic weiss mysq hat so seine Eigenheiten welche auch Ich nicht alle kenne....

      SELECT Format([Tree_Works.FromDateTime],'hh.nn.ss') AS Ausdr1
      FROM Tree_Works
      WHERE (((Format([Tree_Works.FromDateTime],'mm.dd.yyyy'))=#11/7/2003#) AND ((Tree_Works.EmployeID)=6));

      Aber muss statt # nicht ein ' hin?

      Ich meine ja nur... auf Oracle wäre das so der Fall.

      Gruss Matze

      PS. Ist Dein alter thread zum Thema schon im Archiv?
          Falls nein dann bleib doch bitte dort.

      1. Hi,

        also wenn Du mit Excell bzwe. Access arbeitest, sieht das wieder anderster aus.
        Dort must Du einen Datumstyp mit einem Datumstyp vergleichen.
        Die Microsoftschen Befehle kenne ich wiederum gar nicht.
        Die Redmonder halten sich noch viel weniger an Standards wie mysql oder Oracle.
        Du musst also mal selber in der Hilfe nachsehen, wie du einen Sring nach Datum konvertierst.

        Gruss Matze

        1. ich habe es geschafft! :-)

          eventuell interessiert es dich ja, darum poste ich es gleich mal:

          SELECT Max(Format(Tree_Works.FromDateTime,'hh.nn.ss')) AS LatestTime
          From Tree_Works WHERE (((Tree_Works.EmployeID)= 6) AND ((Format([Tree_Works].[FromDateTime],'dd.mm.yyyy'))= #10.11.2003#));

          so geht das. ist eben mit dem select max von letzter woche, nicht mit order by....gut so!:-) danke für den select max - tipp, konnte ich gut gebrauchen!
          schönen tag noch,
          adé

          Hi,

          also wenn Du mit Excell bzwe. Access arbeitest, sieht das wieder anderster aus.
          Dort must Du einen Datumstyp mit einem Datumstyp vergleichen.
          Die Microsoftschen Befehle kenne ich wiederum gar nicht.
          Die Redmonder halten sich noch viel weniger an Standards wie mysql oder Oracle.
          Du musst also mal selber in der Hilfe nachsehen, wie du einen Sring nach Datum konvertierst.

          Gruss Matze

          1. Hi,

            danke ja das kann man sicher mal gebrauchen.
            So nun weiss ich auch was Du wirklich wolltest :-))
            Du wolltest also den letzen Eintrag eines Benutzers eine Tages ermitteln.

            Na wann man das vorher gewusst hätte.
            Gut, dass Du es selber heraus gefunden hast, schade, weil ähnlich Lösung mit Format hatte ich vorhin grad aus einem SQL Buch.
            Da stand aber dass es für Informix richtig wäre.

            Tja nur noch ein Tip am Ende des ganzen.
            Klammern sind recht gut aber Du verwendest zu viele davon. Das macht das ganze unübersichtlich und ist unnötig.

            SELECT Max(Format(Tree_Works.FromDateTime,'hh.nn.ss'))
            AS    LatestTime
            From  Tree_Works
            WHERE Tree_Works.EmployeID = 6
            AND Format([Tree_Works].[FromDateTime],'dd.mm.yyyy')= #10.11.2003#;

            so dürfte es auch reichen.

            Gruss Matze

  2. Hello,

    dann musst Du über die Time-Felder gruppieren (Group by), dann den Maximalwert suchen (select max() )und ein Filter auf die ID setzen (where ...)

    Ich denke, wenn Du bei MySQL nach diesen Stichworten suchst, findest Du genügend Beispiele.

    Grüße

    Tom