SQLExpress, MS Access, Datum/Uhrzeit

SQL Express von Boris Borzic

Moderator: Moderatoren

SQLExpress, MS Access, Datum/Uhrzeit

Beitragvon 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
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1748
Registriert: Fr, 08. Feb 2008 21:29

Re: SQLExpress, MS Access, Datum/Uhrzeit

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

Hi,

versuche es mal nur mit dem Datum im ISO Format:
'JJJJMMTT'
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13195
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitragvon 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
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1748
Registriert: Fr, 08. Feb 2008 21:29

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitragvon 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13195
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitragvon 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
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1748
Registriert: Fr, 08. Feb 2008 21:29

Re: SQLExpress, MS Access, Datum/Uhrzeit

Beitragvon 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13195
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim


Zurück zu SQLExpress

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast