Frequently asked questions - Base

From The Document Foundation Wiki
< Faq‎ | Base‎ | 121
Jump to: navigation, search

Come posso calcolare un'età dalla data di nascita?

  • Dato un campo contenente date di nascita, calcolare l'età corrente.

Age calculation, results in the form "xx years"

La query sarà:

SELECT "DateNaissance", 
CASE WHEN MONTH(CURRENT_DATE) < MONTH("DateNaissance") OR ( MONTH(CURRENT_DATE) = MONTH("DateNaissance") AND DAY(CURRENT_DATE) < DAY("DateNaissance") ) 
THEN CAST((YEAR(CURRENT_DATE) - YEAR("DateNaissance") -1) AS VARCHAR) || ' ans' 
ELSE CAST((YEAR(CURRENT_DATE) - YEAR("DateNaissance") ) AS VARCHAR) || ' ans'END AS "Age"FROM "Table1"

Per calcolare l'età al giorno più vicino:

Example calculated on the 02/07/2011

La query assomiglierà a questa:

SELECT "DateNaissance", "Nom", YEAR(NOW())-YEAR("DateNaissance")-
CASE WHEN (MONTH( NOW() ) < MONTH("DateNaissance") OR ( MONTH( NOW() ) = MONTH("DateNaissance") AND 
DAY( NOW() ) < DAY ("DateNaissance"))) THEN 1 ELSE 0 END AS "ans", 
MONTH(NOW())-MONTH("DateNaissance") +
CASE WHEN MONTH(now()) <= MONTH("DateNaissance") AND DAY(NOW()) < DAY("DateNaissance")
THEN 11 ELSE
CASE 
WHEN MONTH(NOW()) < MONTH("DateNaissance") AND DAY(NOW()) >= DAY("DateNaissance")
THEN 12 ELSE
CASE WHEN MONTH(NOW()) > MONTH("DateNaissance") AND DAY(NOW()) < DAY("DateNaissance")
THEN -1 ELSE 0
END
END
END AS "mois", 
DATEDIFF('DAY', CAST(YEAR(NOW()) || '-' || RIGHT( 0 || MONTH(NOW())  - casewhen DAY(NOW()) < DAY("DateNaissance")
THEN 1 ELSE 0
END, 2) || '-' || RIGHT( 0 || DAY("DateNaissance"), 2) AS DATE) , NOW() ) AS "jours" FROM "Table1"