[SQL - postgreSQL] Recherche sur des dates

Recherche sur des dates [SQL - postgreSQL] - SQL/NoSQL - Programmation

Marsh Posté le 09-02-2006 à 05:58:55    

bonjour,  
je dois fixer un bug dans un code qui n'est pas de moi et j'ai un probleme avec les dates.  
pour faire simple je vais vous expliquer ce qu'on devrait obtenir et ce qu'on obtient réellement (bug).  
 
ce qu'on veut :  
en sélectionnant une année, par exemple 1980, on veut obtenir la liste de toutes les personnes née en 1980
 
ce qu'on obtient réellement (qui ne correspond pas à ce qu'on veut) :  
en sélectionnant une année, par exemple 1980, on obtient la liste de toutes les personnes dont la date de naissance est inférieure ou égale à 1980-12-31.
 
voici le morceau de requête SQL qui ne va pas :  

Citation :

and ( b.birthday <= '1980-12-31 11:59:59'::timestamp )  


 
 
on voit aisément le problème mais je n'arrive pas à touver la syntaxe qui me permettrait de faire une comparaison du meme genre que je pourrai faire avec une chaine :  

Citation :

and ( b.birthday like '1980%' )

 
 
 
quelques infos concernant la base de données : PostgreSQL 7.3.4.  
le champ birthday est de type date.

Reply

Marsh Posté le 09-02-2006 à 05:58:55   

Reply

Marsh Posté le 09-02-2006 à 08:26:51    

après avoir potassé la documentation de postgreSQL j'ai trouvé la solution, pour ceux que ça interesse :

Citation :

and date_part('year', b.birthday) = '1980'


 
la requete complete :

Citation :

select b.member_id, b.birthday  
from member a, member_info b  
where a.store_id='1026'  
and b.member_id=a.member_id  
and a.status<>'DEL'  
and date_part('year', b.birthday) = '1980'  
order by b.member_id desc


 
j'ai cru un moment que ça ne marchait pas puis il m'a suffit de fermer pgAdminIII puis de le re-ouvrir pour que la requete fonctionne ... très étrange !

Reply

Sujets relatifs:

Leave a Replay

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