BDE->Access->SQL-Syntax-Problem



  • Hallo Fans!

    ich Versuche gerade mit der BDE über ein Alias auf eine AccessDB zuzugreifen. Mein SQL-String sieht folgendermaßen aus:

    SELECT Datum, M419M030 FROM 1 WHERE Datum >= '14.03.2005' AND Datum <= '14.04.2005'
    

    Irgendwie stimmen die Angaben für das Suchdatum nicht. Es kommt eine entsprechende ODBC-Fehlermeldung zurück.

    Was mach ich falsch?



  • Hallo

    sicher stimmt das Datumsformat nicht, weil die Datenbank ein anderes Format erwartet. Probier mal statt '14.03.2005' dieses Format '2005-03-14'.
    So wird das Datum jedenfalls in MySQL verarbeitet.
    Die Umwandlung kannst du einfach mit FormatDateTime(...) machen.

    bis bald
    akari



  • Am einfachsten ist es eine parametriesierte Abfrage zu verwenden:

    SELECT ... WHERE datum >= :pvondatum AND datum <= pbisdatum;
    

    Und im Source dann

    Query->ParamByName("Parametername")->AsDateTime = TDateTime(...);
    

    Dann brauchst Du Dir über das erwartet Format keine Gedanken mehr zu machen.

    EDIT: Ich weiß nicht ob das auch für Access gilt, aber bei Paradox über die BDE ist das Format "MM/TT/JJJJ".



  • Jo. ich hatte es dann auf den Tipp hin mal im Format 'yyyy-mm-dd' probiert. Das hat auch nicht hingehauen. In einem VB-Forum habe ich dann gelesen, dass die die Datumswerte immer in # einschließen. 🙄 Wozu gibt es eigentlich SQL92?

    Nichtsdestotrotz, der SQL String muss also so aussehen:

    SELECT Datum, M419M030 FROM 1 WHERE Datum >= #2005-03-14# AND Datum <= #2005-04-14#
    

    vollständig mit Uhrzeit sieht das ganze dann so aus:

    SELECT Datum, M419M030 FROM 1 WHERE Datum >= #2005-03-14 00.00.00# AND Datum <= #2005-04-14 23.59.59#
    

    Ich danke Euch beiden für die Hinweise!


Anmelden zum Antworten