J'essaie de récupérer des données de ma table access
en fonction de la colonne Date
. Mon exigence est d'afficher tout ce qui est supérieur à la certaine valeur. J'essaie de cast
ma valeur, qui est un string
en utilisant Format &CDate
fonctionne avec le type de données datetime
et se jette en tant que débordement.
Voici la requête:
Select * from Events
Where Events.[Date] > cDate(Format("20130423014854","yyyy-MM-dd hh:mm:ss"))
Exemple de valeur d'enregistrement de date du tableau: 2013-04-23 13:48:54.0
Events.[Date]
est un champ de type Date/Heure dans access
Comment puis-je réparer cela ?
Utilisez la fonction DateValue()
pour convertir un type de données string
en date
. C'est la façon la plus simple de procéder.
DateValue(String Date)
Dans Access, cliquez sur Create > Module
et collez le code suivant
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
Frappé Ctrl+S et enregistrez le module sous modDateConversion
.
Essayez maintenant d'utiliser une requête comme
Select * from Events
Where Events.[Date] > ConvertMyStringToDateTime("20130423014854")
--- Modifier ---
Solution alternative évitant la fonction VBA définie par l'utilisateur:
SELECT * FROM Events
WHERE Format(Events.[Date],'yyyyMMddHhNnSs') > '20130423014854'
Fondamentalement, cela ne fonctionnera pas
Format("20130423014854","yyyy-MM-dd hh:mm:ss")
la fonction format
ne fonctionnera que si votre chaîne a un format correct
Format (#17/04/2004#, "yyyy/mm/dd")
Et vous devez spécifier quel type de données du champ [Date]
est, car je ne peux pas mettre cette valeur 2013-04-23 13:48:54.0
sous un champ Date générale (j'utilise MS Access2007
). Vous voudrez peut-être afficher ce sujet: sélectionnez la date entre les deux
cdate(Format([Datum im Format DDMMYYYY],'##/##/####') )
convertit la chaîne sans caractères de ponctuation en date
Si vous devez afficher tous les enregistrements après le 01/09/2014, ajoutez ceci à votre requête:
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")