- Catégories :
DATE_FROM_PARTS¶
Crée une date à partir de composants numériques individuels qui représentent l’année, le mois et le jour du mois.
- Alias :
DATEFROMPARTS
Syntaxe¶
DATE_FROM_PARTS( <year>, <month>, <day> )
Arguments¶
year
Expression entière à utiliser comme année pour construire une date.
month
Expression entière à utiliser comme mois pour la construction d’une date, janvier étant représenté par 1 et décembre par 12.
day
Expression entière à utiliser comme jour pour la construction d’une date, généralement comprise entre 1 et 31.
Notes sur l’utilisation¶
DATE_FROM_PARTS est généralement utilisé pour gérer des valeurs dans des plages « normales » (par exemple, mois 1-12, jours 1-31), mais il gère également des valeurs situées en dehors de ces plages. Cela permet, par exemple, de choisir le énième jour de l’année qui peut être utilisé pour simplifier certains calculs.
Les valeurs d’année, de mois et de jour peuvent être négatives (par exemple pour calculer une date N mois avant une date spécifique). Le comportement des nombres négatifs n’est pas entièrement intuitif ; voir la section Exemples pour plus de détails.
Exemples¶
Composants dans les plages normales :
SELECT DATE_FROM_PARTS(1977, 8, 7); +-----------------------------+ | DATE_FROM_PARTS(1977, 8, 7) | |-----------------------------| | 1977-08-07 | +-----------------------------+
Composants hors des plages normales :
100ème jour (à partir du 1er janvier 2010)
24 mois (à partir du 1er janvier 2010)
SELECT DATE_FROM_PARTS(2010, 1, 100), DATE_FROM_PARTS(2010, 1 + 24, 1); +-------------------------------+----------------------------------+ | DATE_FROM_PARTS(2010, 1, 100) | DATE_FROM_PARTS(2010, 1 + 24, 1) | |-------------------------------+----------------------------------| | 2010-04-10 | 2012-01-01 | +-------------------------------+----------------------------------+
Composants avec un zéro ou des nombres négatifs :
SELECT DATE_FROM_PARTS(2004, 1, 1), -- January 1, 2004, as expected. DATE_FROM_PARTS(2004, 0, 1), -- This is one month prior to DATE_FROM_PARTS(2004, 1, 1), so it's December 1, 2003. -- This is NOT a synonym for January 1, 2004. DATE_FROM_PARTS(2004, -1, 1) -- This is two months (not one month) before DATE_FROM_PARTS(2004, 1, 1), so it's November 1, 2003. ; +-----------------------------+-----------------------------+------------------------------+ | DATE_FROM_PARTS(2004, 1, 1) | DATE_FROM_PARTS(2004, 0, 1) | DATE_FROM_PARTS(2004, -1, 1) | |-----------------------------+-----------------------------+------------------------------| | 2004-01-01 | 2003-12-01 | 2003-11-01 | +-----------------------------+-----------------------------+------------------------------+SELECT DATE_FROM_PARTS(2004, 2, 1), -- February 1, 2004, as expected. DATE_FROM_PARTS(2004, 2, 0), -- This is one day prior to DATE_FROM_PARTS(2004, 2, 1), so it's January 31, 2004. DATE_FROM_PARTS(2004, 2, -1); -- Two days prior to DATE_FROM_PARTS(2004, 2, 1) so it's January 30, 2004. +-----------------------------+-----------------------------+------------------------------+ | DATE_FROM_PARTS(2004, 2, 1) | DATE_FROM_PARTS(2004, 2, 0) | DATE_FROM_PARTS(2004, 2, -1) | |-----------------------------+-----------------------------+------------------------------| | 2004-02-01 | 2004-01-31 | 2004-01-30 | +-----------------------------+-----------------------------+------------------------------+SELECT DATE_FROM_PARTS(2004, -1, -1); -- Two months and two days prior to DATE_FROM_PARTS(2004, 1, 1), so it's October 30, 2003. +-------------------------------+ | DATE_FROM_PARTS(2004, -1, -1) | |-------------------------------| | 2003-10-30 | +-------------------------------+