Gesucht SQL String für CSV Liste aehnlich DateDiff

30/06/2009 - 13:48 von Michael Schmitz | Report spam
Hallo NG,

ich habe hier eine CSV Liste bei der ich über OleDb zugreife:

OledbConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=c:\temp\;Extended Properties="text;HDR=Yes;FMT=Delimited"


Folgenden SQL String versuche ich abzusetzen:

DELETE CCLog WHERE DATEDIFF(d,[LogTime], '30.06.2009') > 10

Benutz ich einen SQLServer2005 dann funktioniert das anstandslos. Bei der
CSV Liste kommt das hier
"Syntaxfehler (fehlender Operator)"

Was muss ich wohl machen damit der String für JET passt?

bzw. Gibt es einen String der auf beides passt, der Records loescht die
àlter als 10 Tage sind?

TIA

Gruß

Michael
 

Lesen sie die antworten

#1 Elmar Boye
30/06/2009 - 15:44 | Warnen spam
Hallo Michael,

Michael Schmitz schrieb:
ich habe hier eine CSV Liste bei der ich über OleDb zugreife:

OledbConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=c:\temp\;Extended Properties="text;HDR=Yes;FMT=Delimited"

Folgenden SQL String versuche ich abzusetzen:

DELETE CCLog WHERE DATEDIFF(d,[LogTime], '30.06.2009') > 10

Benutz ich einen SQLServer2005 dann funktioniert das anstandslos.



Am Rande: Auch nur bei der richtigen Datumseinstellung,
dort wàre '20090630' wesentlich sicherer, siehe
http://www.insidesql.org/beitraege/...datentypen

Bei der CSV Liste kommt das hier "Syntaxfehler (fehlender Operator)"

Was muss ich wohl machen damit der String für JET passt?



Access verwendet für Datumsangaben das gleiche Format
wie VBA bzw. auch VB.NET bzw. die DataColumn.Expression,
für oben #06/30/2009#

bzw. Gibt es einen String der auf beides passt, der Records loescht die
àlter als 10 Tage sind?



Nicht wirklich.

Was das Datum angeht:
Verwende einen OleDbParameter vom Typ DbTimeStamp und übergib ein DateTime
(wie auch bei anderen variablen).
Dann kümmert sich der Treiber ums Datumsformat.

DATEDIFF ist allerdings auch nicht in jeder Hinsicht identisch.
So erwartet Access an erster Stelle eine Zeichenkette, also
DATEDIFF("d", ...)

Im obigen FAlle könnte man sich zunutze machen, dass eine Differenz
von zwei Datumsangaben als Fließkommazahl berechnet wird,
wobei der ganzzahlige Teil die Tage enthàlt, also
(LogDate - ?) > 10

(? ist der Parameter)

Aber das funktioniert bei komplexeren Datumsberechnungen
schnell nicht mehr.

Gruß Elmar

Ähnliche fragen