Benutzer mit den meisten Antworten
Datum aus Feldbezeichnern erstellen

Frage
-
Antworten
-
Hallo Andreas,
in der BOL stehen zu Cast und Convert die ganzen Datumstypen. Ich glaube, das Format ist 104, also statt 112 nimm 104
- Als Antwort markiert Andreas Vogt Montag, 18. Juli 2011 13:44
-
Ist der INNER JOIN auf Ventildaten korrekt?
SELECT S.ID_V , S.Datum , S.zeit , S.Erfassungsdatum FROM tbl_Ventil V LEFT JOIN tbl_Ventil_Daten VD ON V.ID_V = VD.ID_V INNER JOIN tbl_importVentil S ON V.ID_V = S.ID_V WHERE CONVERT(DATETIME, S.Datum + ' ' + S.zeit, 104) <= V.Erfassungsdatum ;
Der Datumsvergleich sollte eigentlich passen.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann- Als Antwort markiert Andreas Vogt Dienstag, 19. Juli 2011 11:00
Alle Antworten
-
Nach dem Warum frage ich gar nicht, z.B. so:
DECLARE @Date VARCHAR(16) = '2011-07-18' ; DECLARE @Time VARCHAR(16) = '10:03:00.123' ; SELECT CAST (@Date + ' ' + @Time AS DATETIME) ;
Siehe CAST und CONVERT, falls du eine anderes Format als ISO speicherst.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann -
Hallo Andreas,
Wie sind die Werte gespeichert? Welche Serverversion hast Du?
Vorausgesetzt, es handelt sich um varchar-Felder im Format yyyymmdd (Datum) und ss:mm.ss (Zeit) dann:
select convert(datetime, datum + ' ' zeit ,112)
- Als Antwort vorgeschlagen Falk Krahl Montag, 18. Juli 2011 09:11
-
Hallo Andreas,
in der BOL stehen zu Cast und Convert die ganzen Datumstypen. Ich glaube, das Format ist 104, also statt 112 nimm 104
- Als Antwort markiert Andreas Vogt Montag, 18. Juli 2011 13:44
-
Hallo,
ja so funktioniert es.
Aber meine Abfrage funzt immer noch nicht ganz:
SELECT S.ID_V, S.Datum, S.zeit, S.Erfassungsdatum
FROM dbo.tbl_Ventil_Daten AS VD INNER JOIN
dbo.tbl_Ventil AS V INNER JOIN
dbo.tbl_importVentil AS S ON V.ID_V = S.ID_V ON VD.ID_V = V.ID_V
WHERE (CONVERT(datetime, S.Datum + ' ' + S.zeit, 104) <= V.Erfassungsdatum)Datum: 01.07.2011
zeit: 21:49:00
Erfassungsdatum: 20110715 14:27:00
Drehe ich das kleiner gleich um, dann erhalte ich den einen Datensatz. Aber der 1.7.2011 ist doch nicht größer als der 15.7.2011??
Wenn ich CONVERT(datetime, S.Datum + ' ' + S.zeit, 104) mit in das Select-Statement nehme erhalte ich 2011-07-01 21:49:00.000
Wo ist da der Fehler?
Gruß Andreas
http://www.AccessBlog.de -
Ist der INNER JOIN auf Ventildaten korrekt?
SELECT S.ID_V , S.Datum , S.zeit , S.Erfassungsdatum FROM tbl_Ventil V LEFT JOIN tbl_Ventil_Daten VD ON V.ID_V = VD.ID_V INNER JOIN tbl_importVentil S ON V.ID_V = S.ID_V WHERE CONVERT(DATETIME, S.Datum + ' ' + S.zeit, 104) <= V.Erfassungsdatum ;
Der Datumsvergleich sollte eigentlich passen.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann- Als Antwort markiert Andreas Vogt Dienstag, 19. Juli 2011 11:00
-
Andreas Vogt wrote:
leider liegt der Datumswert im Format dd.mm.yyyy vor. Wie kann ich diesen
konviertieren?z.B. über String Manipulationen:
Hier ein Beispiel:
DECLARE @Datum NVARCHAR(10) DECLARE @Zeit NVARCHAR(8) SET @Datum = '20.01.2011' SET @Zeit = '12:13:14' SELECT CAST(SUBSTRING(@Datum, 7, 4) + '-' + SUBSTRING(@Datum, 4, 2) + '-' + SUBSTRING(@Datum, 1, 2) + ' ' + @Zeit AS DATETIME) AS DatumZeitImDateTimeFormat
HTH
Henry