Nous sommes actuellement le 29 Mars 2024, 06:57

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 3 message(s) ] 
Auteur Message
 Sujet du message: DATEPART dans SQL
MessagePublié: 09 Juin 2009, 16:49 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 17 Août 2002, 09:24
Message(s) : 200
Salut à tous,

je dois faire une requête SQL qui me donnera comme résultat la liste des utilisateurs dont l'anniversaire est aujourd'hui ou bientôt. Donc, je programme en .ASP et je n'arrive pas à afficher correctement. Si par exemple nous somme le mois de décembre, bien la requête doit tenir compte que le mois #1 suit décembre.

Code :
SELECT top 50 Prenom, Nom, DateNaissance
FROM tbl_Usager
WHERE DATEPART(month, DateNaissance) >= month(getdate())


j'avais ajouté à cette requête le DATEPART du jour, mais évidement il tenais compte de > que aujourd'hui. :(

Merci si vous pouvez m'aider !


Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: DATEPART dans SQL
MessagePublié: 10 Juin 2009, 14:28 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 17 Août 2002, 09:24
Message(s) : 200
Ok j'ai trouvé cette solution:
Code :

declare @moisencours int
declare @moissuivant int
set @moisencours = datepart(month,getdate())
      IF @moisencours = 12
set @moissuivant = 1
      ELSE
set @moissuivant = @moisencours + 1
select top 100 Prenom, Nom, DateNaissance
from tbl_usager
where (datepart(month,tbl_usager.datenaissance) = @moisencours OR datepart(month,tbl_usager.datenaissance) = (@moissuivant)) and datepart(day,tbl_usager.datenaissance) >= CASE
      WHEN datepart(month,tbl_usager.datenaissance) = @moisencours
      THEN datepart(day,getdate())
      ELSE 1
END
order by
CASE
      WHEN @moisencours = 12
      THEN datepart(month,tbl_usager.datenaissance)
      END DESC,
CASE
      WHEN @moisencours != 12
      THEN datepart(month,tbl_usager.datenaissance)
      END,
datepart(day,tbl_usager.datenaissance)



avec Sql Management studio ca fonctionne bien mais dans ma requete SQL dans ma page .ASP , ça fonctionne pas.


Code :

sql="declare @moisencours int declare @moissuivant int set @moisencours = datepart(month,getdate()) IF @moisencours = 12 set @moissuivant = 1 ELSE set @moissuivant = @moisencours + 1 select top 100 Prenom, Nom, DateNaissance from tbl_usager where (datepart(month,tbl_usager.datenaissance) = @moisencours OR datepart(month,tbl_usager.datenaissance) = (@moissuivant)) and datepart(day,tbl_usager.datenaissance) >= CASE WHEN datepart(month,tbl_usager.datenaissance) = @moisencours THEN datepart(day,getdate()) ELSE 1 END order by CASE WHEN @moisencours = 12 THEN datepart(month,tbl_usager.datenaissance) END DESC, CASE WHEN @moisencours != 12 END,datepart(day,tbl_usager.datenaissance);"



Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: DATEPART dans SQL
MessagePublié: 27 Juin 2009, 23:55 
Hors-ligne
Fidèle
Fidèle

Inscription : 06 Jan 2003, 19:14
Message(s) : 689
Ouf, quelle solution compliquée pour rien ! :p

Tu peux utiliser les fonctions qui gèrent les dates pour toi, c'est à dire tu trouves les dates de naissance dont le mois est :
>= date_getmonth(date_aujourdhui)
<= date_getmonth(date_aujourdhui + 15jours)

suffit de trouver les fonctions à utiliser pour la technologie que tu utilises.

_________________
Comparateur de prix informatique - InfoPrix.ca


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 3 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 7 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site