PDA

View Full Version : Select Abfrage now() läuft auf Fehler



Seiten : [1] 2 3

svt
14-11-12, 06:53
Hallo,

ich habe in MS Access 2003 eine Tabellenverknüpfung auf eine AS400 Datei per ODBC, hier frage ich unter anderen ein
Datums-Feld ab (BMDTEE, Datentyp=numeric, Länge=8) was auch
funtioniert mit der Direkteingaben (BMDTEE <= '20111231') oder mit BETWEEN, jetz möchte ich aber die Abfrage aber mit Heute (now()) bzw. Heute -5 .Die Fehlermeldung ist: ...Operanden des Vergleichsoperators = sind nicht kompatibel. (#-401)
Wer kann mir hier weiterhelfen???

andreaspr@aon.at
14-11-12, 06:59
Hallo,
entweder konvertierst die Zahl in ein Datum oder umgekehrt.
Ich würde allerdings ersteres bevorzugen.
Die Konvertierung hängt dann auch noch vom Datumsformat ab welches bei dir eingestellt ist.
Z.B. CCYY-MM-DD oder DD-MM-YY usw.

WHERE current date = date('2012-11-14')
lg Andreas

svt
14-11-12, 07:47
Hallo Andreas,

stehe gerade ein bischen auf dem Schlauch :confused: , ich bin noch Amateur in
diesem Bereich mein Format sieht so aus (CCYY-MM-DD) z.Bsp.
where BMDTEE <= '20111231' Was muss ich nun genau tun, damit ich
nur die Daten von Heute angezeigt bekomme??
Ich muss das dann fest für die User abspeichern!!

Danke

andreaspr@aon.at
14-11-12, 07:56
Du musst die Abfrage so bauen, dass sie dann wie folgt aussieht:

WHERE date('2012-11-14') <= current date

Das kannst du z.B. so machen:

where current date >=
date (left(char(BMDTEE ), 4) Concat '-' concat
Substring(char(BMDTEE ), 5, 2) Concat '-' concat
right(trim (char(BMDTEE )), 2))

lg Andreas

B.Hauser
14-11-12, 07:59
Ein Datum ist ein Datum und weder ein numerischer Wert noch ein alphanumerischer Wert.
SQL ist jedoch so schlau, dass es einen alphanumerischen Wert in einem der folgenden Formate 'JJJJ-MM-TT', 'TT.MM.JJJJ' oder 'MM/TT/JJJJ' als Datum interpretieren und mit einem Datum vergleichen kann.
Mit der Funktion DATE kann allerdings auch ein alphanumerischer String im Format 'JJJJMMTTHHMMSS' (ohne Trennzeichen) in ein echtes Datum konvertiert werden.

Ein Datum im Format JJJJMMTT kann SQL nicht erkennen und nicht (mit der Funktion DATE()) konvertieren.

Vorausgesetzt Dein numerisches Datum ist im Format JJJJMMTT, kann die Abfrage wie folgt aussehen:


Select *
From YourTable
Where Date(Digits(NumDatum) concat '000000')) = Current_Date;


Birgitta

B.Hauser
14-11-12, 08:06
@Andreas

Nimm lieber DIGITS statt CHAR!

CHAR entfernt führende Nullen und richtet linksbündig aus und könnte somit zu unliebsamen Überraschungen führen.

Birgitta

andreaspr@aon.at
14-11-12, 09:03
@Andreas

Nimm lieber DIGITS statt CHAR!

CHAR entfernt führende Nullen und richtet linksbündig aus und könnte somit zu unliebsamen Überraschungen führen.

Stimmt, bei CHAR muss man noch ein TRIM dazu setzen.
DIGITS ist ein guter Tipp! :)

svt
14-11-12, 09:54
Hallo,
erstmal Vielen Dank für Euren regen Einsatz und die vielen Tipps, finde ich echt Klasse, mein Problem ist leider noch nicht ganz gelöst. Ich habe jetzt zwar die Spalte "date", die ich auch sortieren kann, aber das ich nur die Ansicht eines Tages (aktuellen Tag am besten now()!!!) bekomme ich nicht hin, ich habe immer noch alle Datensätze, hier der Code:

select bmfirm, bmiden, bmidv, bmprnr, bmqkz, bmqsta,
bmort, bmber,
bmbmen, bmvmen, bmrmen, bmlm, bmmlm,
bmlenr, bmzule, bmbst1, bmbstp,
bmwenr, bmwepo, bmdtdc, bmdtee,
(left(DIGITS(BMDTEE ), 4) Concat '-' concat
Substring(DIGITS(BMDTEE ), 5, 2) Concat '-' concat
right(trim (DIGITS(BMDTEE )), 2))date
from birdatv6.pbestlo

WHERE current date = date('2012-11-14')
order by date DESCWo liegt mein Fehler???

andreaspr@aon.at
14-11-12, 09:58
Ich glaube du hast uns da etwas missverstanden.
Die Anweisung sollte wie folgt aussehen:


select bmfirm, bmiden, bmidv, bmprnr, bmqkz, bmqsta,
bmort, bmber,
bmbmen, bmvmen, bmrmen, bmlm, bmmlm,
bmlenr, bmzule, bmbst1, bmbstp,
bmwenr, bmwepo, bmdtdc, bmdtee,
from birdatv6.pbestlo

WHERE Date(Digits(BMDTEE ) concat '000000')) = Current Date
order by bmdtee DESC

B.Hauser
14-11-12, 09:59
Das Tagesdatum ist ja auch der 14.11.2012.

Wenn Du also selektierst
Where Tagesdatum = 14.11.2012 bekommst Du auch alle Datensätze.

Birgitta