Announcement

Collapse
No announcement yet.

Problem SQL Filter nach Datum (englische Sprache)

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

  • Problem SQL Filter nach Datum (englische Sprache)

    Hallo,

    ich habe folgendes Problem:
    In meiner Datenbank gibt es ein Feld DT, es beinhaltet einen TDateTime-Wert.
    Ziel ist es, die Datenbank anhand dieses Feldes zu filtern, d.h. Datensätze zwischen bestimmten Zeitpunkten.

    Die Abfrage lautet bisher:
    SELECT * FROM db WHERE DT>x1 AND DT<x2

    x1, x2 sind im Systemdatumformat, entsprechend der gewählten Sprache.

    Doch hier wird anscheinend ein Stringvergleich und kein Zeitvergleich vorgenommen.
    Der Filter funktioniert nur auf deutschen Systemen innerhalb von Zeiträumen ohne Tageswechsel, also z.b. zwischen 10:00 und 16:00 des selben Tages, nicht aber von 10.00AM und 06.00PM oder 22:00 12.10.2004 und 02:00 13.10.2004.

    Gibt es eine Möglichkeit einen Zeitraum herauszufiltern, ohne die Struktur der Datenbank zu ändern?

    Vielen Dank für die Hilfe

  • #2
    Hallo Sebastian,
    da es keinen Einheitlichen SQL-Standard zur Speicherung von Datumswerten gibt, ist dies von DB zu DB unterschiedlich. Ich würde in jedem Fall statt der impliziten Typumwandlung des Servers eine explizite Typumwandlung in der Abfrage einsetzen, d.h. mit den Konvertierungsfunktionen der DB die Stringparameter in einen Datumswert umwandeln. z.B. für ORACLE-Server:<pre> SELECT * FROM db
    WHERE DT > TO_DATE(x1, 'HH24:MI DD.MM.YYYY')
    AND DT < TO_DATE(x2, 'HH24:MI DD.MM.YYYY')</pre>
    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Oder mit parametrisierten Selects arbeiten, dann können direkt TDateTime-Werte verwendet werden, unabhängig von der verwendeten Datenbank / Sprache.

      Grüße Joche

      Comment


      • #4
        Vielen Dank, funktioniert und das habe ich auch gesucht

        Comment

        Working...
        X