2013-06-28 14 views
6

sto tyring per recuperare i dati dal mio tavolo l'accesso sulla base di colonna Data, requisito è per mostrare tutto di più grande di certo valoreConversione di stringhe in data data MS Access Query

Sto cercando di lanciare il mio valore che è una stringa utilizzando la funzione & CDate con tipo di data e ora, si espande come Overflow.

Ecco query:

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

Sample Data di Registrazione Valore dalla tabella: 2013/04/23 13: 48:. 54.0

eventi [Data] è una data/ora tipo di campo nell'accesso

Come posso risolvere questo problema?

+0

Si prega di [modifica] (http://stackoverflow.com/posts/17361338/edit) la tua domanda per chiarire:. È il 'eventi [Data]' campo un 'Data/Campo Time' o campo 'Text'? –

+0

Fatto !! .. è un campo Data/Ora – user2385057

+0

Ok, bene. Hai provato a utilizzare 'Dove Eventi. [Data]> # 2013-04-23 01: 48: 54 #'? –

risposta

1

Fondamentalmente, questo non funzionerà

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

la funzione di formattazione funziona solo se la stringa ha formato corretto

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

ed è necessario dire che cosa tipo di dati di campo [Data] è ? perché non riesco a inserire questo valore 2013-04-23 13: 48: 54.0 in un campo Data Genearal (utilizzo MS access2007 btw). Si potrebbe desiderare di vedere questo argomento select date in between

+0

Data è il campo di tipo data/ora configurato nel database – user2385057

3

In Access, fare clic su Create > Module e incollare il seguente codice

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 

Hit Ctrl +S e salvare il modulo come modDateConversion.

Ora provare a utilizzare una query come

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

--- --- Modifica

soluzione alternativa la funzione di VBA definita dall'utente evitando:

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

funziona con comportamento simile a quello che ho menzionato in precedenza mostra tutti i record anche con data e ora inferiori al valore precedente ma della stessa data .. inoltre sto cercando un modo più diretto di implementazione perché questo sarebbe costruito in codice Java .. quindi non può funzionare con questa funzione perché ora potrei avere l'accesso installato sul server di destinazione – user2385057

+0

@ user2385057 RE: non usando VBA - Ho aggiornato la mia risposta. –

+0

+1 Adoro la semplicità dell'aggiornamento per convertire il campo della data per il confronto. –

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

converte stringa senza caratteri di punteggiatura in data

0

Se avete bisogno di visualizzare tutti i record dopo 2014/09/01, aggiungere questo alla tua richiesta:

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

utilizzare la funzione DateValue per convertire una stringa fino ad oggi. Questo è il modo più semplice per farlo.

DateValue (Stringa Data)

+0

Sarebbe bello condividere un esempio –