Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2880 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] Différence de 2 dates

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Différence de 2 dates

n°1352863
hacksi
Posté le 24-04-2006 à 16:51:44  profilanswer
 

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
mood
Publicité
Posté le 24-04-2006 à 16:51:44  profilanswer
 

n°1352870
olivthill
Posté le 24-04-2006 à 16:55:32  profilanswer
 

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.

n°1352872
hacksi
Posté le 24-04-2006 à 16:57:39  profilanswer
 

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

n°1352882
olivthill
Posté le 24-04-2006 à 17:07:39  profilanswer
 

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#;


n°1353279
hacksi
Posté le 25-04-2006 à 09:09:17  profilanswer
 

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
n°1353769
betsamee
Asterisk Zeperyl
Posté le 25-04-2006 à 17:12:01  profilanswer
 

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

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

n°1354063
hacksi
Posté le 26-04-2006 à 09:28:51  profilanswer
 

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

n°1354411
darkfrost
Posté le 26-04-2006 à 15:34:35  profilanswer
 

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 !

n°1354431
betsamee
Asterisk Zeperyl
Posté le 26-04-2006 à 16:00:58  profilanswer
 

+1

n°1354450
hacksi
Posté le 26-04-2006 à 16:15:05  profilanswer
 

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 ?

mood
Publicité
Posté le 26-04-2006 à 16:15:05  profilanswer
 

n°1354456
hacksi
Posté le 26-04-2006 à 16:20:45  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] Différence de 2 dates

 

Sujets relatifs
[Résolu] Un peu d'aide pour l'erreur 1064 de cette requête[GTK] Positionnement précis de texte dans une DrawBox [Auto Résolu]
[resolu]Recherche sensible ET insensible à la casse[Java]Modification de code[Résolu]
batch : extraire la difference entre 2 fichiers[Résolu]Instanciation d'une classe differente selon les arguments
[Résolu] Changement de couleur au passage de la souris[RÉSOLU]Utilisier les 'in' dans une requéte sql
[résolu] Probleme de popup sur mon site[Résolu] probleme de syntaxe *&
Plus de sujets relatifs à : [RESOLU] Différence de 2 dates


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR