update età

Stato
Discussione chiusa ad ulteriori risposte.

jacoboss

Utente Silver
18 Novembre 2007
63
9
0
72
Eccomi tanto per cambiare problemino con l'sql...
ho fatto un db di prova con una tabella anagrafica che contiene varie informazioni....
Ora volevo aggiungere la colonna età e ricavarla automaticamente, aggiornando tutte le righe...
però non riesco a fare now()-data_nascita nemmeno con la funzione diffdate...

ecco la query che non funziona:
Codice:
UPDATE 
    ANAGRAFICA
SET 
    ETA = NOW()-DATA_NASCITA

mi dice che non posso fare quell'assegnazione perchè now()-data_nascita è un intervallo mentre eta è date...

sbaglio operatore? non devo usare il meno? devo fare qualche cast?
è giusto usare la date per età?
forse sarebbe meglio un int ma come faccio a ottenere l'età da dalla data...
insommma domande niubbe così...:asd:
 
in pratica metti il valore data_nascita in una variabile, che devi dirmi come è strutturata se vuoi un esempio pratico, e poi con la funzione date creare una variabile con la data corrente, a cui sarà sottratta la data di nascita, da strutturare come data_nascita...
 
Non puoi farlo perchè now dovrebbe essere gg/mm/aaaa hh:mm:ss.. mentre il campo (che dovresti aver settato come tipo date) è gg/mm/aaaa ... di conseguenza basta che fai date()-DATA_NASCITA
# se non lo fa con l'operatore - usa datediff, anzi, per avere la differenza in anni (che è quella che serve a te) mi sa che devi usare proprio datediff
 
stoner ha detto:
Non puoi farlo perchè now dovrebbe essere gg/mm/aaaa hh:mm:ss.. mentre il campo (che dovresti aver settato come tipo date) è gg/mm/aaaa ... di conseguenza basta che fai date()-DATA_NASCITA
# se non lo fa con l'operatore - usa datediff, anzi, per avere la differenza in anni (che è quella che serve a te) mi sa che devi usare proprio datediff

ERROR: function date() does not exist
datediff?
già provato ma non mi funziona mi da errore nel primo parametro...:
Codice:
UPDATE 
    ANAGRAFICA
SET 
    ETA = DATEDIFF(yy, NOW(), DATA_NASCITA)
 
Ma perchè fare una cosa del genere? Se memorizzi solo la data di nascita e quando hai bisogno dell'età fai la differenza tramite il linguaggio di programmazione usato? Mai studiata teoria dei DB?
 
beh.. si effettivamente è vero. Non ha senso fare quello che dici tu... l'età varia al passare degli anni. E' inutile che la memorizzi.
 
no che non ha senso è vero ma volevo provare il linguaggio sql non devo fare nulla in particolare sono delle prove per familiarizzare sia con l'ambiente di postgre che con l'sql in generale...
era una curiosità mia vabb se non lo sapete non importa grazie lo stesso a tutti
 
Ok. Visto che conosco soltanto access e mysql ti rimando al link di
http://www.postgresql.org/docs/8.0/interactive/functions-datetime.html
postgre così almeno è sicuro che non sbagli.
p.s. Leggendo la documentazione c'è una funzione che fa al caso tuo
Codice:
UPDATE 
    ANAGRAFICA
SET 
    ETA = age(timestamp DATA_NASCITA)
 
stoner ha detto:
Ok. Visto che conosco soltanto access e mysql ti rimando al link di
http://www.postgresql.org/docs/8.0/interactive/functions-datetime.html
postgre così almeno è sicuro che non sbagli.
p.s. Leggendo la documentazione c'è una funzione che fa al caso tuo
Codice:
UPDATE 
    ANAGRAFICA
SET 
    ETA = age(timestamp DATA_NASCITA)

guarda in teoria dovremmo esserci però mi dice:

ERROR: syntax error at or near "DATA_NASCITA"
LINE 4: ETA = age(timestamp DATA_NASCITA)

grazie lo stesso...
comunque se il postgre ha una funzione incorporata per l'età non avevo pisciato proprio fuori dal vaso no?
 
Ah... boh.. la funzione l'ho copiata pari pari dal link che ti ho postato...
comunque se il postgre ha una funzione incorporata per l'età non avevo pisciato proprio fuori dal vaso no?
si ma non ha senso metterlo dentro la tabella.. lo usi su una query ...
Codice:
SELECT age(timestamp DATA_NASCITA) as ETA from ANAGRAFICA
 
Stato
Discussione chiusa ad ulteriori risposte.