2009-07-09 11 views
0

J'utilise Access 2007.Microsoft Access SQL Date de comparaison

Je dois retourner des lignes avec un champ date/heure compris dans une plage de dates à spécifier dans les paramètres de requête.

Ce qui suit ne génère pas d'erreur, mais ne semble pas fonctionner.

SELECT FIELDS FROM FOO 
WHERE (FOO.CREATED_DTG BETWEEN [START_DTG] And [END_DTG]); 

De même cela ne fonctionne pas pour moi

SELECT FIELDS FROM FOO 
WHERE (FOO.CREATED_DTG >= [START_DTG] And FOO.CREATED_DTG < [END_DTG]); 

Comment puis-je obtenir ce travail?

Mise à jour: l'utilisation de CDate ne semble pas faire la différence.

Répondre

1

Vos dates commencent et se terminent par un #?

+0

ajouter hashes résultats dans le message « l'expression est mal orthographiée ou est trop complexe pour être évalué » – Ben

1

aussi vous avez < = et> = ... vous ne voulez probablement que = sur l'un de ces opérateurs.

+0

oui, merci mec – Ben

2

BLAH est le nom d'un champ ou d'une table? Comme vous choisissez SELECT BLAH, j'imagine que ça donne un nom à un champ, mais alors BLAH.CREATED_DTG n'a aucun sens - voulez-vous dire FOO.CREATED_DTG peut-être?

+0

oui, merci de repérer cela – Ben

+0

De rien! Alors, comment se fait-il pas upvote? -) –

1

Etes-vous sûr que le champ CREATED_DTG est format Date?

Avez-vous essayé

WHERE (FOO.CREATED_DTG BETWEEN #01/01/1971# And #07/07/2009#); 

(ou tout ce qui est approprié dans la voie de dates - le point est, non pas une requête de paramètres)

1

Are [START____DTG] et [END____DTG] champs dans la table FOO, ou sont-ils des paramètres? Si ce sont des paramètres, vous devez déclarer leur type afin d'obtenir la validation des valeurs d'entrée. Si oui, vous devez ajouter ceci avant la première ligne de votre instruction SELECT:

PARAMETERS [START_DTG] DateTime, [END_DTG] DateTime; 
Questions connexes