la requete avec la fonction dateadd() ne prend pas en compte celle ci

la requete avec la fonction dateadd() ne prend pas en compte celle ci - SQL/NoSQL - Programmation

Marsh Posté le 21-06-2004 à 16:08:35    

salut a tous je m'explique :
 
 je crée un bouton sous access qui dois renvoyer tout les appels ( dont l'utilisateur rentre la date ) qui on été effectué. donc ce bouton devra renvoyer les appels des 4 jours precedants et du jour actuel
j'ai donc penser a une requete lancer par le bouton :
 
SELECT *
FROM entreprise
WHERE appel BETWEEN NOW AND ( SELECT  
 
et je pensais a une requete imbriqué mais je vois pas comment faire
de plus je sais pas si il va accepter le now qui marche avec VBA mais je sais pas l'équivalent en sql
 
merci d'avance


Message édité par Mr Mazurier le 24-06-2004 à 14:45:07
Reply

Marsh Posté le 21-06-2004 à 16:08:35   

Reply

Marsh Posté le 21-06-2004 à 19:25:04    

Ca va dépendre un peu suivant si tu utilises Oracle ou mySql.
 
En Oracle, ça donnerait quelque chose du genre :
SELECT *  
FROM entreprise  
WHERE appel BETWEEN SYSDATE AND TO_DATE(TO_CHAR(SYSDATE - 4, 'YYYYMMDD'), 'YYYYMMDD');
 
(le TO_DATE / TO_CHAR, c'est pour prendre le jour, sans heure, d'il y a 4 jours, mais y a probablement une fonction qui renvoie ça de façon plus directe)


Message édité par Beegee le 21-06-2004 à 19:25:47
Reply

Marsh Posté le 22-06-2004 à 01:52:43    

Beegee a écrit :

si tu utilises Oracle ou mySql.


il utilise Access


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 22-06-2004 à 01:59:52    

sinon en SQL Server tu peux faire un truc du style
 
DATEDIFF(day, -4, champ_date)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 22-06-2004 à 09:50:14    

JagStang a écrit :

sinon en SQL Server tu peux faire un truc du style
 
DATEDIFF(day, -4, champ_date)


Access c'est la même syntaxe :jap:

Reply

Marsh Posté le 22-06-2004 à 10:09:39    

Sinon, au lieu de datediff, j'utiliserais plutôt dateadd.
 
select ...
from ...
where ladate > dateadd(day, -4, ladate)
 
 
D'ailleurs en fait... Jag tu t'es planté ;)
 
datediff c'est pour récupérer le nombre de "interval" entre deux dates :
 
select datediff(d, '01/01/2003', '01/01/2004')
 
ca retourne 365 ;)

Reply

Marsh Posté le 22-06-2004 à 10:12:48    

:jap:


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 22-06-2004 à 10:14:05    

je vous remerci tous je vais essayer et je vous dis si ca marche

Reply

Marsh Posté le 22-06-2004 à 10:28:24    

ok arjuna j'ai essayé ta requete  
j'ai remplacé "ladate" par mon champs donc appel mais il me demande remplir le champs day  
je penser que c'etait la fonction qui donnait la date actuel ...
 
je vous mets qd meme ma requete :
 
SELECT *  
FROM entreprise  
where appel > dateadd(day, -4, appel)  
 
une derniere question tu as mis -4 mais je ce que je veux c'est sur 5 cinq jours . je pense que c'est fait expres mais je verifie

Reply

Marsh Posté le 22-06-2004 à 11:02:36    

dans le poste initial c'est 4. tout dépend si tu veux y compris ou pas


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 22-06-2004 à 11:02:36   

Reply

Marsh Posté le 22-06-2004 à 11:08:23    

ok merci je veux y compris mais pour day je fais quoi ? c'est une fonction ou un champs ?

Reply

Marsh Posté le 22-06-2004 à 11:09:04    

Met -5 ;)
 
Sinon, essaye d ou 'd' ou 'day' à la place de day.
 
En effet, il n'est pas censé te dire ça ;) Je ne sais jamais quel est le code qui correspond à ça.
 
Recherche dans l'aide, normalement il doit y avoir un petit tableau avec la liste ;)
 
Un de ces 4 j'installerai l'aide le SQL Server sur mon poste, je pourrai répondre plus aisément ;)

Reply

Marsh Posté le 22-06-2004 à 11:09:13    

un mot clé. tu mets juste day ou d, sans quotes rien


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 22-06-2004 à 11:16:42    

voici ma requete elle fonctionne  
 
SELECT ent_nom, appel, relance
FROM entreprise
WHERE appel > dateadd('d', -5, appel);
 
merci a tous pour votre aide
si j'ai un autre pb je repasserai
salut

Reply

Marsh Posté le 23-06-2004 à 10:24:35    

bon et bien en fait ca marche pas !
ma requete :  
 
SELECT entreprise.Ent_nom, entreprise.Appel, entreprise.Relance
FROM entreprise
WHERE (((entreprise.Appel)>DateAdd('d',-5,[appel])) AND ((entreprise.rappeller)=True));
 
don celle ci selectionne les entreprise qui on appelle dans les 5 jours precedants et où le champs rappeller est coché
 
seulement je pense qu'il ne fait pas attention a la date meme quand c'est plusieur mois de difference
 
au fait je suis sous access 2002 si ca change quelque chose

Reply

Marsh Posté le 24-06-2004 à 14:45:27    

siouplé aidez moi ...

Reply

Marsh Posté le 28-06-2004 à 12:01:17    

est ce que quelqu'un pourrait me dire que quel valeur retourne (now - 5) je comprend pas ce que je dois mettre !

Reply

Sujets relatifs:

Leave a Replay

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