Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Chiarimento espressione per trovare Età

    Ciao a tutti,
    vorrei dei chiarimenti riguardo questa espressione:
    codice:
     YEAR(CURRENT_DATE())-YEAR(P.data_nascita) - IF(RIGHT(CURRENT_DATE(), 5) < RIGHT(P.data_nascita, 5),1,0) as eta
    1- allora, qui se la provo(ovviamente inserita un una query) funziona tutto alla perfezione, però mi premeva capire bene come funzionava l'espressione, ad esempio se digito solo
    YEAR(CURRENT_DATE())-YEAR(P.data_nascita) il risultato è lo stesso, quindi mi chiedevo a cosa serve tutto il resto?

    2- poi i due 5 che incontro in IF(RIGHT(CURRENT_DATE(), 5) < RIGHT(P.data_nascita, 5) dovrebbero indicare che io vado a prendere i primi 5 valore a partire da destra, ma se la mia data e nel formato '2004-05-12? che senso ha prendere le ultime 5 cifre? non mi basta solo ragionare con gli anni (ovviamente ho provato a digitare la query inserendo 4 al posto di 5, il risultato è che due età di 3 si abbassano di un anno, e non mi spiego il perché)

    3- cosa mi indicano i valori 1,0 alla fine dell'espressione?

    grazie mille per l'aiuto in anticipo!

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Qui trovi proprio una spiegazione

    http://dev.mysql.com/doc/refman/5.0/...culations.html

    La parte con il right(data,5) serve per estrarre giorno e mese e confrontare se il giorno e mese correnti cono precedenti o meno a quelli di nascita (in sostanza se quest'anno ha già compiuto gli anni o li farà più avanti)

    Quello che manca (nel link) è quel IF (condizione, 1,0) che è anche la tua terza domanda, che vuol dire "se la condizione è vera restituisci 1 altrimenti restituisci 0"

  3. #3
    Ok, quindi se ho capito bene dopo l'if controllo se l'utente in questione ha compiuto gli anni entro la data attuale, nel caso non gli avesse compiuti all'ora sottraggo una anno al risultato, altrimenti lo lascio invariato!

    Cmq grazie mille per l'aiuto!

    Marco

  4. #4
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Originariamente inviato da MarcoPro1989
    Ok, quindi se ho capito bene dopo l'if controllo se l'utente in questione ha compiuto gli anni entro la data attuale, nel caso non gli avesse compiuti all'ora sottraggo una anno al risultato, altrimenti lo lascio invariato!
    Esatto,

    Se ad esempio sono nato il 17/10/2000 ho già compiuto 12 anni ("11-17" NON è minore di "10-17" quindi metto 0); 2012-2000-0 = 12

    Se sono nato il 17/12/2000 NON ho ancora compiuto 12 anni ("11-17" E' minore di "12-17" quindi metto 1); 2012-2000-1 = 11

  5. #5
    grazie milleeeeeeeeee
    sei stato chiarissimo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.