la requete avec la fonction dateadd() ne prend pas en compte celle ci - SQL/NoSQL - Programmation
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)
Marsh Posté le 22-06-2004 à 01:52:43
Beegee a écrit : si tu utilises Oracle ou mySql. |
il utilise Access
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)
Marsh Posté le 22-06-2004 à 09:50:14
JagStang a écrit : sinon en SQL Server tu peux faire un truc du style |
Access c'est la même syntaxe
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
Marsh Posté le 22-06-2004 à 10:12:48
Marsh Posté le 22-06-2004 à 10:14:05
je vous remerci tous je vais essayer et je vous dis si ca marche
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
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
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 ?
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
Marsh Posté le 22-06-2004 à 11:09:13
un mot clé. tu mets juste day ou d, sans quotes rien
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
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
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 !
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