Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

SQLExpress, MS Access, Datum/Uhrzeit

SQL Express von Boris Borzic

Moderator: Moderatoren

Antworten
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1933
Registriert: Fr, 08. Feb 2008 21:29

SQLExpress, MS Access, Datum/Uhrzeit

Beitrag von georg » Fr, 18. Mär 2011 10:33

Hallo,


für die Erstellung einiger Reports bin ich auf eine MS Access Tabelle angewiesen, die von der Personalabteilung "programmiert" wurde. Da jeder Satz n-fach vorkommt, und nur durch das Stichtagsdatum MONAT (so heisst das Feld, wirklich!) unterschieden werden kann, muss ich eine Anweisung

Code: Alles auswählen

SELECT * FROM PERS WHERE MONAT =
ausführen, nur mit dem, was nach dem Gleichheitszeichen kommt, habe ich meine Probleme.

MS Access sagt, es ist der Feldtyp "Datum/Uhrzeit". Greife ich das Feld mittels

Code: Alles auswählen

SELECT MONAT FROM PERS
ab, so liefert my SQLExpress z.B. "1997-01-01 00:00:00" als Feldinhalt zurück (ValType ist "C").

Nur verweigert Access die Gefolgschaft, wenn ich nun

Code: Alles auswählen

"SELECT * FROM PERS WHERE MONAT = '1997-01-01 00:00:00'"
ausführe, und auch ein Austausch des ' durch ein " ändert nichts.
= SQL ERROR ===========
Date: 20110318 09:37:34
C:\Entwicklungen\Access\rp.exe, Thread: 1
Windows XP 05.01 Build 02600 Service Pack 2, SQLXpp: 3.2.08, Runtime: 1.90.355
SQLState: 22018, ErrorCode:62506
[Microsoft][ODBC Microsoft Access Driver] Datentypen in Kriterienausdruck unverträglich.

Thread ID 1
Called from SQLSTATEMENT:EXECUTE(504)
Called from SQLSELECT:EXECUTE(1632)
Called from DOFIRSTREAD(54)
Called from MAIN(13)

SQLString: SELECT count(*) from PERS where MONAT = '1997-01-01 00:00:00'
lautet dann die Fehlermeldung. Im Moment bin ich ein wenig verwirrt ... Wer kann mir mit Entwirrung helfen?


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13764
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitrag von brandelh » Fr, 18. Mär 2011 10:39

Hi,

versuche es mal nur mit dem Datum im ISO Format:
'JJJJMMTT'
Gruß
Hubert

georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1933
Registriert: Fr, 08. Feb 2008 21:29

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitrag von georg » Fr, 18. Mär 2011 10:46

Hallo, Hubert -


also, das funktioniert in dem Aspekt, dass keine Fehlermeldung mehr kommt, dafür ist aber auch das result set leer ..., d.h. der count(*) liefert 0 als Ergebnis, obwohl Daten vorhanden sind.


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13764
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitrag von brandelh » Fr, 18. Mär 2011 11:03

Hi,

ein Bekannter hat bei sich mit Access abgefragt und der String sieht so aus:

Wichtig ! US-Datumsformat !

SELECT * FROM PERS WHERE MONAT = #11/27/2011#

oder er verwendet Abfragen auf ... year('feld') = and ... vermutlich gibt es auch month() und day()

Bei Pablo gibt es aber auch noch die SQLExpress() Gruppe ;-)
Gruß
Hubert

georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1933
Registriert: Fr, 08. Feb 2008 21:29

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitrag von georg » Fr, 18. Mär 2011 11:06

Hallo, Hubert -


"Daumen hoch" Smily fehlt, aber das war die Lösung. Vielen Dank, jetzt muss ich die Daten weiter ausmisten ...


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13764
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitrag von brandelh » Fr, 18. Mär 2011 11:13

Hi,

Boris hat auf eine solche Anfrage diese Infos veröffentlicht:

Code: Alles auswählen

Date, Time, and Timestamp Syntax:
Syntax                         Format
{d 'value'}                    yyyy-mm-dd
{t 'value'}                    hh:mm:ss
{ts 'value'}                   yyyy-mm-dd hh:mm:ss
Eine Abfrage nach einem Zeitstempel müsste also so aussehen:

Code: Alles auswählen

select time from events where time > {ts '1997-01-16 08:50:43'}
Wenn man nur ein bestimmtes Datum will :

Code: Alles auswählen

select monat from database where monat = {d '1997-01-16'}
Wenn man einen bestimmten Monat sucht :

Code: Alles auswählen

select monat from database where year(month) = ? and month(monat)= ?
Bei der Syntax bin ich mir etwas unsicher, insbesondere wann man ' und wann " verwendet.
Einige setzen ' um Feldnamen, andere um Stringkonstanten, wofür wird " verwendet ?
Mit SQL bin ich noch etwas unsicher :D
Gruß
Hubert

Antworten