Alerte pour date de fête

Résolu
Nightwulf Messages postés 4 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 31 décembre 2007 - 30 déc. 2007 à 07:34
Nightwulf Messages postés 4 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 31 décembre 2007 - 31 déc. 2007 à 20:28
Bonjour,
J'aimerais être éclairé;  J'ai une base de donnée en Access contenant un champ DOB, dont la date de naissance, ainsi que l'année de naissance d'une personne.
Ce que je veux faire avec mon programme en C#:  Lorsque je démarre le logiciel, faire une vérification et affichier toutes les personnes ayant leur anniversaire entre maintenant et dans 14 jours.  À partir de cette vérification, je n'y arrive plus.  Je ne peux comparer les dates, puisque les années diffères.  Je ne peux comparer les jours seuls, ou les mois seul, puisque si j'arrive avec un intervalle entre 29 décembre et 13 janvier, je ne peux vérifier >= 29 && <=13.  Je ne sais plus quoi faire ....

Merci de votre aide

Max

6 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
31 déc. 2007 à 11:33
Salut

Dans ce cas, il faut utiliser un modulo 365 (les années bisexitiles on peut passr c'est pas important)

360 + 15 modulo 365 --> 10 (ie ca retranche 365)

Et tu prends le max - le min et tu peux comparer.
Sinon tu retranche directement 365 et tu compares

Ca doit pas etre compliqué.

Bon courage
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
31 déc. 2007 à 20:01
En C#:

public
class
Program
{
  
public
static
void Main(
string[] args)
   {
     
// Au 31 d‚cembre 2007
      Console.WriteLine(HasBirthday(
new
DateTime(2008, 1, 5), 14));
// True
      Console.WriteLine(HasBirthday(
new
DateTime(2008, 1, 15), 14));
// False
   }

  
public
static
bool HasBirthday(
DateTime birthDate)
   {
     
return HasBirthday(birthDate, 0);
   }

  
public
static
bool HasBirthday(
DateTime birthDate,
int precision)
   {
     
return
Math.Abs(
DateTime.Now.Subtract(birthDate).TotalDays) <= precision;
   }
}

<hr />
-My Blog-
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
31 déc. 2007 à 01:20
salut

tu convertit en numero du jour dans l'anée
1-1 --> 1

31-1-->31
1-2 --> 32

SELECT CLng(CLng([madate])-DateSerial(Year([madate]),1,1)+1) AS jouran FROM matable;

(non testé)

et apres un between avec un +14

bon courage
0
Nightwulf Messages postés 4 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 31 décembre 2007
31 déc. 2007 à 04:15
Bonjour :)

Merci pour votre question.
La difficulté que je rencontre avec cette méthode est à la fin de l'année, lorsque je vais tomber entre, par exemple, entre le 360 ieme jours et le 10jours de l'année d'ensuite.
Si l'anniversaire est le 5 janvier,  la comparaison BETWEEN entre 360 et 10 ne fonctionne pas ? Soit tous les jours entre le 10 et le 360 existe, ou soit le BETWEEN est faussé entre 360 et 10.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nightwulf Messages postés 4 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 31 décembre 2007
31 déc. 2007 à 17:21
Merci beaucoup pour votre réponse, elle ma beaucoup éclairée.
0
Nightwulf Messages postés 4 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 31 décembre 2007
31 déc. 2007 à 20:28
Très belle méthode ! Merci!  Je crois que je vais utiliser cette méthode.

Un ami m'a envoyé une requête pour access, elle semble marcher la majorité du temps, mais si je met ma date au 01/01/08, la requete me sort une date du 31/12/07.
J'ai un peu de difficultés la seconde partie du where, avec le >=351 et <=365   Je comprend la première partie, pour que le nombres de jours soit entre 0 et 14.  Mais je ne comprend pas le pourquoi du entre 351 et 365

SELECT tableClient.*
FROM tableClient
where
(datediff('d', dateadd('yyyy', datediff('yyyy', anniversaireClient, now()), anniversaireClient), now()) <= 14
and
datediff('d', dateadd('yyyy', datediff('yyyy', anniversaireClient, now()), anniversaireClient), now()) >= 0)
or
(datediff('d', dateadd('yyyy', datediff('yyyy', anniversaireClient, now()), anniversaireClient), now()) >= 351
and
datediff('d', dateadd('yyyy', datediff('yyyy', anniversaireClient, now()), anniversaireClient), now()) <= 365)
0
Rejoignez-nous