Newsgroup: it.comp.www.asp
Titolo: compleanni e anniversari

Buongiorno , ho un piccolo problema con delle date, in pratica ho una
tabella, che ha due campi
nome e date del compleanno , e vorrei con una query recuperare tutti i
record in cui il giorno ed il mese cadano in un intervallo di date scelto
dall'utente.
ad esempio poniamo che nella mia tabella inserisco
id  nome            dataNascita
1  francesco     10/02/1990
2  mario             08/08/1995
3  antonio            05/05/1990
e l'utente vuol sapere chi compie gli anni tra il giorno
01/4/2004 e il giorno 01/09/2004
dovrebbe recuperare mario  & antonio , ma non francesco...
Qualcuno ha qualche suggerimento ?

 dovrebbe recuperare mario  & antonio , ma non francesco...
una bella BETWEEN ?
-- 
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.ebow.it/blog/
 - Mktg Log
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004

 Qualcuno ha qualche suggerimento ?
SELECT * FROM Tabella WHERE DataCompleanno >= 'AAAAMMGG' AND DataCompleanno
<= 'AAAAMMGG'


Evidentemente mi sono espresso male...
Unabetween tra il 01/04/2004 3 il 01/09/2004 non mi darebbe nessun record
visto che le date dei compleanni sono rispettivamente
del 1990.....
pero' i mesi compresi tra lo  01/04/2004 3 il 01/09/2004 sono aprile maggio
giugno luglio agosto  e quindi i record  di id 2  e 3 mi andreabbero bene...
forse cosi' ho chiarito meglio il mio problema

 dall'utente.
Beh tu dici di avere come compo la data del compleanno e poi scrivi quella
di nascita: sono due cose diverse.
Se hai la data di compleanno ti bastano le soluzioni proposte...se hai
quella di nascita devi andare ad estrapolare parte della data: questo è
possibile ma dipende da che tipo di database usi, esistono le funzioni
Datepart e Convert ma non ci sono su tutti i db.
Inoltre se il db te lo stai progettando tu potresti salvarti la data su 3
campi differenti (giorno,mese,anno) cosi potresti aggirare il problema.
Gianni

 del 1990.....
ti basta creare una query in questo modo
Versione per mssql
SELECT
    ID
FROM
    TABELLA
WHERE
CAST(Year(GETDATE()) AS Varchar(4)) +'-'+ RIGHT('0' + CAST(Month(campo) AS
Varchar(2)), 2) + '-' +RIGHT('0' + CAST(Day(campo) AS Varchar(2)), 2)
BETWEEN '2004-04-01' AND '2004-09-01'
-- 
ITHost (your host company)
Technical Manager
C. Paparelli (MCSE,MCSD,MCDBA)
http://www.ithost.ch

 andreabbero bene...
la BETWEEN andrebbe fatta confrontando solo mese/giorno...


Inserire la data in 3 campi mi sembra problematico (il software dovrebbe
gestire 3 campi invece di uno e non potresti sfruttare le funzioni sulle
date)
Quando sai come vengono memorizzate le date yyyy/mm/dd invece che dd/mm/yyyy
il gioco è fatto.
Peschi solo gli ultimi 5 o i primi cinque caratteri e fai i confronti

 wrote in message
news:cdjee1$ik$1...@newshispeed.ch...

Ok grazie della dritta pero' cosi' se faccio richieste a cavallo di anni
tipo  tra il 01/09/2004 e il 01/04/2005 non sembra funzionare...

 tipo  tra il 01/09/2004 e il 01/04/2005 non sembra funzionare...
basta impostare i dati in between e vedrai che funziona alla perfezione
anche con date a cavallo tra il 2029 e il 2045 :-P


 wrote in message
news:ce68ei$86b$1...@newshispeed.ch...

Ti assicuro che la query
SELECT     *
FROM         dbo.tbl_addetti
WHERE     (CAST(YEAR(GETDATE()) AS Varchar(4)) + '-' + RIGHT('0' +
CAST(MONTH(datanascita) AS Varchar(2)), 2) + '-' + RIGHT('0' +
CAST(DAY(datanascita)
                      AS Varchar(2)), 2) BETWEEN '2004-3-01' AND
'2005-07-01')
su una tabella fatta cosi' :
id datanascita
 1 01/05/1978
 2 01/01/1997
 3 01/11/2004
 7 02/05/1978
 6 11/04/2004
non mi ritorna nemmo un record....
invece dovrebbe ridarmeli tutti ....
puo' essere un problema di sql in italiano (formato della data ? )...

 puo' essere un problema di sql in italiano (formato della data ? )...
no perchè lavori con il formato standard ovvero per mssql yyyy-mm-dd mentre
per acces mm/dd/yyyy


 wrote in message
news:ceb85c$a92$1...@newshispeed.ch...

Il db che uso è SQL server,  ma prova con i dati che ho postato vedrai  che
la trasformazione delle date e' sull'anno dell get date , quello attuale e
quindi se tutte le date vengono roiportate al 2004 , chi e 'nato a gennaio
ad esempio (10-01-1976 ----diventa--> 10-01-2004 ) non figura in una query
tra il 01-01-2004 e...il  01-02-2005...
cmq grazie dello spunto , ci lavoro un po' su per capire come ovviare a
questo caso particolare .
Grazie..