[RESOLU] Différence de 2 dates

Différence de 2 dates [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 24-04-2006 à 16:51:44    

Bonjour,
je suis sous access et je fais la requêt suivante :
select * from ENREGISTREMENT where Jour BETWEEN '05/03/2006' and '06/03/2006';
 
Je précise que le champ Jour est de type date et a le format '00/00/0000'
 
Donc cette requête me renvoie l'erreur suivante : Type de données incompatibles dans l'expression du critère.
 
Voilà, pourriez-vous m'aider svp.


Message édité par hacksi le 26-04-2006 à 16:22:02
Reply

Marsh Posté le 24-04-2006 à 16:51:44   

Reply

Marsh Posté le 24-04-2006 à 16:55:32    

Avec quelle base de données ?
Les formats de date varient d'une base de données à l'autre.
Par exemple, avec Access il faut mettre des dièses de chaque côté de la date, avec Oracle il faut utiliser TO_DATE() etc.

Reply

Marsh Posté le 24-04-2006 à 16:57:39    

je travail sur une base de données access. J'ai essayé de mettre des # mais ça ne change rien.

Reply

Marsh Posté le 24-04-2006 à 17:07:39    

C'est parce qu'il ne faut pas d'apostrophe car ce sont des dates et non pas des chaînes de caractères.
Une autre cause de problème peut venir du format de la date (anglais ou française ou autre), car il faut que ce format soit celui defini dans le panneau de configuration de Windows.
 
Sur ma base, j'ai fait le test suivant qui marche correctement

SELECT DISTINCT ma_date
FROM ma_table
WHERE ma_date between #15/04/2006# and #23/04/2006#;


Reply

Marsh Posté le 25-04-2006 à 09:09:17    

Si je fais :

Code :
  1. SELECT *
  2. FROM ENREGISTREMENT
  3. WHERE Jour BETWEEN #13/03/2006# and #20/03/2006#;


 
ça fonctionne mais si je descend en dessous de 13 celà ne marche pu la requete me renvoie n'importe quoi alors qu'il y a bien des données du 12/03/2006 par exemple.


Message édité par hacksi le 25-04-2006 à 09:10:19
Reply

Marsh Posté le 25-04-2006 à 17:12:01    

il me semble me rappeler que ca fonctionne si tu fait;

Code :
  1. between #mm/dd/yyyy# and #mm/dd/yyyy#

Reply

Marsh Posté le 26-04-2006 à 09:28:51    

heu bin non que je mette 13/03/2006 ou 03/13/2006 ça ne change rien.

Reply

Marsh Posté le 26-04-2006 à 15:34:35    

Sous Access, le format par défaut est mm/dd/yyyy.
 
Seulement si tu rentre 20/02/2006, Access inverse le mois et le jour au lieu de sortir une erreur (quelle connerie d'ailleurs).
 
Un BETWEEN #12/03/2006# and #20/03/2006# signifie donc pour Access entre le 3 Décembre et le 20 Mars...donc aucun résultat...logique.
 
Si tu met BETWEEN #01/03/2006# and #20/03/2006# tu auras tout entre le 3 Janvier et le 20 Mars.
 
Essaye BETWEEN #03/12/2006# and #03/20/2006#, cad entre le 12 Mars et le 20 Mars.  
 
Si ca ne sors aucun résultat, cela signifie que la date stockée dans ta base est également au format mm/dd/yyyy à l'affichage. Auquel cas, test en rentrant du 03/12/2006 et du 03/13/2006 dans ta base :D !!
 
Si ca marche toujours pas ou si tu t'es perdu, enerve toi contre un mur, prend une douche, envoi verbalement access paitre dans une autre dimension, et remet toi y dans quelques heures :D !
 
Access et les dates, j'ai rien vu de pire :D !

Reply

Marsh Posté le 26-04-2006 à 16:00:58    

+1

Reply

Marsh Posté le 26-04-2006 à 16:15:05    

bin écoute en faisant ce que tu dit ça fonctionne lorsque je fais directement la requete dans access.
 
Mais le probleme c'est que j'exécute la requête avec 2 dates récupérées dans un formulaire. Les champs permettant la saisie de ces 2 date sont de format date abrégée jj/mm/aaaa donc si je tape dans un champ "03/15/2006" il me le convertit automatiquement en "15/03/2006". Donc il existe peut être une fonction en vba permettant de remettre au format mm/jj/aaaa ?

Reply

Marsh Posté le 26-04-2006 à 16:15:05   

Reply

Marsh Posté le 26-04-2006 à 16:20:45    

c'est bon je viens de trouver, alors au final celà donne :

Code :
  1. Jour BETWEEN #" & Format(CDate(Me.Date_debut), "mm/dd/yyyy" ) & "# AND #" & Format(CDate(Me.Date_fin), "mm/dd/yyyy" ) & "#"


 
Merci pour votre aide :d mais access c'est quand même une belle mer** du moins pour les date !


Message édité par hacksi le 26-04-2006 à 16:22:49
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed