Announcement

Collapse
No announcement yet.

SQL-Datumsabfrage funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL-Datumsabfrage funktioniert nicht

    Hallo ihrs,

    ich möchte eine simple SQL Abfrage erstellen, die mir alle Daten anzeigt, die innerhalb einer bestimmten Datumsspanne liegen.

    Tabellenstruktur:
    ID (decimal 19,0)
    DATUM (varchar, 10)
    ZEIT (varchar, 8)
    BENUTZER (varchar, 5)
    [...]

    Meine SQL-Abfrage:
    select
    TABELLE1.DATUM,
    TABELLE1.ZEIT,
    TABELLE1.BENUTZER,
    from TABELLE1
    where TABELLE1.DATUM between '05.05.2008' and '06.05.2008'

    Ergebnis:
    05.02.2008 ...
    05.05.2008 ...
    06.05.2007 ...
    06.05.2008 ...

    Es werden mir also leider auch Datensätze angezeigt, die nicht zwischen 05ten und 06ten Mai diesen Jahres liegen.

    Ich hab es anschließend mit einem convert auf das Datumsformat versucht:
    select
    convert(datetime, TABELLE1.DATUM, 104),
    TABELLE1.ZEIT,
    TABELLE1.BENUTZER,
    from TABELLE1
    where TABELLE1.DATUM between convert(datetime, '05.05.2008', 104) and convert(datetime, '06.05.2008', 104)

    Bei dieser Abfrage bekomme ich aber den folgenden Fehler:
    The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

    Könnte mir bitte jemand helfen und sagen wie ich die Abfrage ändern muss, damit nur Datensätze in der angegebenen Zeitspanne angezeigt werden?

    Vielen Dank!

  • #2
    -Welches DBMS?
    -Warum speicherst du Datumswerte als String?
    -Verssuch es mal mit CAST()

    Comment


    • #3
      - englisches SQL2k
      - die Daten kommen von einer Messmaschine und werden so abgespeichert ... da kann ich leider nich viel tun
      - bei cast() bekomme ich leider die selbe fehlermeldung für das erste select-feld wie mit dem convert()
      --> The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

      Comment


      • #4
        Es scheint so, als ob die Funktionen die Zeichenkette im englischen oder ISO-Format erwartet. Du musst wohl den String selber zerlegen/casten (z.B. mit einer UDF)

        Comment


        • #5
          Hallo Samy,

          da Dein Datums-Feld als varchar definiert ist, besteht auch die Möglichkeit, das Du in einem Datensatz auch Müll stehen hast.

          Prüf mal mit

          SELECT *
          FROM Tabelle1
          WHERE ISDATE(Datum) = 0
          Olaf Helper

          <Blog> <Xing>
          * cogito ergo sum * errare humanum est * quote erat demonstrandum *
          Wenn ich denke, ist das ein Fehler und das beweise ich täglich

          Comment


          • #6
            Vielen Dank für eure Hilfe!

            Hab jetzt den String per Funktion zerlegt und prüf den einzeln ab...

            Grüßle

            Comment

            Working...
            X