title image


Smiley Re: "" in SQL-Statements
Zunächst mal: Anzeige- und Eingabeformat spielen für ein SQL-Statement überhaupt gar keine Rolle.

Auch steht in einem als Datum definierten Feld immer ein Datumswert drin, und zwar auch völlig unabhängig vom Anzeige- und Eingabeformat auch immer derselbe.

dh.

Diesen Wert muß ich doch dann, wenn ich ihn sichtbar machen will, wieder umwandeln in das von mir gewünschte "01.10.2002". Ich blicke nicht durch :-((

daß du das genau nicht machen brauchst.



Unter SQL sollte eine Datum immer so aussehen

yyyy-dd-mm

denn bei diesem Format gibt es keinen Interpretationsspielraum für die SQL-Engine.

!

Hinzu kommt für die Erkennung eines Datums, daß SQL ein Anfangs- und ein Endbegrenzungseichen erwartet, in beiden Fällen das Nummern-Zeichen #

(ganz analog zu den String-Begrenzer ' bzw. ")

ZB. ist das hier eine gültiges SQL Statement

INSERT INTO tblxxx (feld_long,feld_string,feld_dat)

VALUES (12345, 'blabla', #2004-04-30#)



Aber mit

CurrentDb.Execute "INSERT INTO tblxxx (feld_long,feld_string,feld_dat, " & _

"SELECT cint(Mid(tblyyy.txt,6,3)),meinevariable,Mid(tblyyy.txt,9,2) & ""."" & Mid(tblyyy.txt,11,2) & ""."" & Mid(tblyyy.txt,13,4)" & _

"FROM tblyyy.txt " & _

"WHERE (((Mid([txt],1,5))=00008));"

erhält man (bei Beschränkung auf die Datumsproblematik) für tblyyy.txt = "30042004" halt einfach das Ergebnis

30"."04"."2004

was halt kein für SQL gültiges Datums-Literal ist!



Auf welche Weise man Du nun das Format yyyy-mm-dd erzeugt, spielt natürlich keine Rolle.

Es ist halt genauso ein Stil-Frage wie zu schreiben

WHERE (((Mid([txt],1,5))='00008'));

oder halt

WHERE txt Like '00008*';



(wobei Du ja der SQL-Engine mit

WHERE (((Mid([txt],1,5))=00008));

auch noch eine implizite Typumwandlung zum Rechnen verpaßt...)



Und nix für ungut: Ein Großteil dieser Diskussion wäre wohl überhaupt nicht nötig, wenn Du dein echtes Statement gepostet hättest, und nicht etwa ein halbgares SQL-Statement aus dem Gedächtnis - wie es zumindest den Anschein macht.



Und nochmal zum Datum:

Hat man zB. das Datum 3.3.2004 dann kann man natürlich schreiben:

INSERT INTO tblxxx (feld_long,feld_string,feld_dat)

VALUES (12345, 'blabla', #03.03.2004#)

auch gibt es beim 13.03.2004 keine Probleme:

INSERT INTO tblxxx (feld_long,feld_string,feld_dat)

VALUES (12345, 'blabla', #13.03.2004#)

Aber wie sich Access-SQL beim 10.03.2004 für den Tages- bzw. Monats-Anteil entscheidet

INSERT INTO tblxxx (feld_long,feld_string,feld_dat)

VALUES (12345, 'blabla', #10.03.2004#)

weiß ich auch nicht, Systemeinstellung? Betriebssystem-Sprache? Sprache des Office-Pakets?

Und daher ist halt das Format

yyyy-mm-dd

zu bervorzugen.



Gruß

Robert



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: