it-swarm.com.de

Konvertieren Sie Zeichenfolge in Datum in MS Access-Abfrage

Ich versuche, Daten aus meiner access Tabelle basierend auf der Date Spalte abzurufen. Meine Anforderung ist es, alles größer als den bestimmten Wert anzuzeigen. Ich versuche, cast meinen Wert, der ein string ist, mit Format &CDate funktioniert mit dem Datentyp datetime und wird als Überlauf ausgegeben.

Hier ist die Abfrage:

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

Beispieldatensatzwert aus Tabelle: 2013-04-23 13:48:54.0

Events.[Date] ist ein Feld vom Typ Datum/Uhrzeit in access

Wie kann ich das beheben?

11
user2385057

Verwenden Sie die Funktion DateValue(), um einen string in einen date-Datentyp zu konvertieren. Das ist der einfachste Weg.

DateValue(String Date) 
11
Diego dot net

Klicken Sie in Access auf Create > Module und fügen Sie den folgenden Code ein

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

Schlagen Ctrl+S und speichern Sie das Modul als modDateConversion.

Versuchen Sie nun eine Abfrage wie

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

--- Bearbeiten ---

Alternative Lösung zur Vermeidung benutzerdefinierter VBA-Funktionen:

SELECT * FROM Events
WHERE Format(Events.[Date],'yyyyMMddHhNnSs') > '20130423014854'
5
Gord Thompson

Grundsätzlich wird dies nicht funktionieren

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

die Funktion format funktioniert nur, wenn Ihre Zeichenfolge das richtige Format hat

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

Und Sie müssen angeben, welcher Datentyp des Feldes [Date] ist, weil ich diesen Wert nicht setzen kann 2013-04-23 13:48:54.0 unter einem allgemeinen Datumsfeld (ich benutze MS Access2007). Möglicherweise möchten Sie dieses Thema anzeigen: Datum dazwischen auswählen

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

wandelt einen String ohne Interpunktion in ein Datum um

1
accessuser

Wenn Sie nach dem 01.09.2014 alle Datensätze anzeigen möchten, fügen Sie Folgendes zu Ihrer Suchanfrage hinzu:

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")
0
Jing Lei