2013-06-28 12 views
6

I tyring bin auf Daten von meinem Zugriffstabelle abrufen basierend auf Spalte Datum Anforderung ist alles größer als bestimmter Wert anzuzeigenConvert String to Date in MS Access Query

Ich versuche, meinen Wert zu werfen, die eine Zeichenfolge mit Format & CDate-Funktion mit Datum Zeit Typ, es wirft als Überlauf aus.

Hier query:

Select * from Events 
Where Events.[Date] > cDate(Format("20130423014854","yyyy-MM-dd hh:mm:ss")) 

Beispiel Datum Rekordwert aus der Tabelle: 2013.04.23 13: 48:. 54,0

Event [Datum] ist ein Datum/Zeit-Feld beim Zugang

Wie kann ich das beheben?

+0

Bitte [Bearbeiten] (http://stackoverflow.com/posts/17361338/edit) Ihre Frage zu klären:. Ist die 'Ereignisse [Datum]' Feld ein 'Datum/Zeit-Feld oder ein 'Text'-Feld? –

+0

Fertig !! .. es ist ein Date/Time Feld – user2385057

+0

Okay, gut. Haben Sie versucht, 'Where Events 'zu verwenden. [Datum]> # 2013-04-23 01: 48: 54 #'? –

Antwort

1

Grundsätzlich wird dies funktioniert nicht

Format("20130423014854","yyyy-MM-dd hh:mm:ss") 

die Funktion Format wird nur funktionieren, wenn die Zeichenfolge richtig Format

Format (#17/04/2004#, "yyyy/mm/dd") 

hat, und Sie müssen sagen, was Datentyp des Feldes [Datum] ist ? Weil ich diesen Wert 2013-04-23 13: 48: 54.0 nicht in ein Feld für das Generaldatum setzen kann (ich benutze MS access2007 btw). Sie könnten dieses Thema select date in between

+0

Datum ist Datum/Uhrzeit Typ Feld in der Datenbank konfiguriert – user2385057

3

In Access finden Sie Create > Module anzeigen möchten, und Hit in den folgenden Code

Public Function ConvertMyStringToDateTime(strIn As String) As Date 
ConvertMyStringToDateTime = CDate(_ 
     Mid(strIn, 1, 4) & "-" & Mid(strIn, 5, 2) & "-" & Mid(strIn, 7, 2) & " " & _ 
     Mid(strIn, 9, 2) & ":" & Mid(strIn, 11, 2) & ":" & Mid(strIn, 13, 2)) 
End Function 

Ctrl +S und speichern Sie das Modul als modDateConversion einfügen.

versuchen nun eine Abfrage wie

Select * from Events 
Where Events.[Date] > ConvertMyStringToDateTime("20130423014854") 

--- Bearbeiten mit ---

Alternative Lösung zu vermeiden benutzerdefinierte VBA-Funktion:

SELECT * FROM Events 
WHERE Format(Events.[Date],'yyyyMMddHhNnSs') > '20130423014854' 
+0

funktioniert mit ähnlichem Verhalten wie ich bereits erwähnt zeigt alle Datensätze auch mit Zeitstempel weniger als oben Wert, aber von gleichem Datum .. auch ich bin auf der Suche nach direkter Weg der Umsetzung, denn das wäre in Java-Code gebaut .. so kann nicht mit dieser Funktion arbeiten, weil ich möglicherweise Zugriff auf den Zielserver – user2385057

+0

@ user2385057 installiert haben RE: nicht mit VBA - Ich habe meine Antwort aktualisiert. –

+0

+1 Liebe die Einfachheit des Updates, um das Datumsfeld für den Vergleich zu konvertieren. –

1
cdate(Format([Datum im Format DDMMYYYY],'##/##/####')) 

wandelt String ohne Interpunktion Zeichen in Datum

0

Wenn Sie alle Datensätze nach 2014.09.01 angezeigt werden müssen, fügen Sie diese zu Ihrer Suchanfrage:

SELECT * FROM Events 
WHERE Format(Events.DATE_TIME,'yyyy-MM-dd hh:mm:ss') >= Format("2014-09-01 00:00:00","yyyy-MM-dd hh:mm:ss") 
4

die DatWert Funktion können Sie eine Zeichenfolge auf dem Laufenden konvertieren. Das ist der einfachste Weg, dies zu tun.

DatWert (String Datum)

+0

Es wäre schön, ein Beispiel zu teilen –