WHERE Bedingung für einen Zeitraum



  • Aloha,

    ich habe eine Tabelle in einer Access DB, in der zwei Dates abgelegt werden. Ich weiß nicht genau wie man das Format ( Smalldate ? ) nennt, so sieht es jedenfalls aus in der Spalte :

    "24.12.2006 14:13:00"

    Das eine Datum ist ein Startdatum, das andere ein Enddatum.

    Nun möchte ich per Where - Bedingung einschränken auf die Datensätze zwischen zwei Zeiten, runtergebrochen bis auf die Minute, sprich in der Art :

    ... Where startdatum < ??? and enddatum > ???

    Wie muß die Stelle wo die Fragezeichen stehen, syntaktisch lauten, damit ich die Datensätze meinetwegen zwischen "24.12.2006 13:00:00" und "24.12.2006 17:00:00" bekomme ?

    Dies soll dann in C++ Code eingefügt für eine DB Abfrage per ODBC.

    Ich habe etliche Varianten schon probiert, nichts funktioniert. Eventuell habt ihr noch eine Idee.

    Vielen Dank und Grüße

    BOA



  • where mydate >= startdatum and mydate <= endedatum
    

    oder auch

    where mydate between startdatum and endedatum
    

    Ich verstehe nicht so recht, wo dein Problem liegt.



  • tntnet schrieb:

    where mydate >= startdatum and mydate <= endedatum
    

    oder auch

    where mydate between startdatum and endedatum
    

    Ich verstehe nicht so recht, wo dein Problem liegt.

    Hi,

    vielen Dank für die Antwort.
    Wie muß mydate konkret aussehen ?

    Bitte schreib es nicht als Variable ( mydate ) sondern mal als Konstante...

    Grüße

    BOA



  • Am besten gar nicht direkt Werte in das Query-Statement schreiben. Bei Datums- und Zeitangaben empfiehlt es sich, mit Parametern zu arbeiten.

    Die BETWEEN-Bedinung kann hier nicht verwendet werden, da Du zwei verschiedene Felder auswerten willst. Das würde funktionieren, wenn Du nur das Startdatum oder nur das Enddatum vergleichen wolltest, respektive wenn Du bei beiden Werten einen Bereich angeben willst:

    WHERE (startdatum BETWEEN :pstartvon AND :pstartbis)
    AND (endedatum BETWEEN :pendevon AND :pendebis)
    


  • Hi Joe,

    auch Dir vielen Dank.
    Ich verstehe jetzt nicht, was Du mir sagen willst.

    Parameter ? Wat denn für Parameter ? 🕶
    Klar, weiß ich was das Wort Parameter bedeutet, aber nicht im Zusammenhang mit einer SQl Query...

    Das kann doch mit einem Datum und Uhrzeit nicht so tricky sein. Das braucht man bei den verschiedensten SQL Queries. Fallen mir etliche Praxisbeispiele ein.

    Das ist doch so, als ob ich einfach zwei Spalten mit int's abfrage.

    "Where tabelle.int1 > 10 and tabelle.int2 < 50"

    Das halt nur mit einer Zeitvariablen...

    Grüße

    BOA



  • Ja, aber Du brauchst gar nicht zu wissen, was dahin gehört. 😉 Wenn Du Parameter verwendest ist der Datenbanktreiber für das korrekte Format verantwortlich. Dies ist der einzige mir bekannte Weg, jeglichen Problemem mit den diversen Spracheinstellungen (OS und DB) aus dem Weg zu gehen.

    Wie Du Parameter an die SQL-Abfrage übergibst, hängt von der verwendeten IDE und den Zugriffskomponenten ab. Das mußt Du herausfinden.

    Ach so, ein weiterer Vorteil von Parametern ist, dass Du diese Werte zur Laufzeit einfach ändern kannst und die Datenmenge aktualisiert wird, ohne dass die Abfrage-Komponente geschlossen und wieder geöffnet werden muss. Das geht dann jetzt aber schon in Richtung 'Prepared Statements'.


Anmelden zum Antworten