- Kategorien:
DATE_FROM_PARTS¶
Erstellt ein Datum aus einzelnen numerischen Komponenten, die Jahr, Monat und Tag des Monats darstellen.
- Aliasse:
DATEFROMPARTS
Syntax¶
DATE_FROM_PARTS( <year>, <month>, <day> )
Argumente¶
yearDer ganzzahlige Ausdruck, der bei Erstellung eines Datums als Jahr verwendet werden soll.
monthDer ganzzahlige Ausdruck, der bei Erstellung eines Datums als Monat verwendet werden soll, wobei Januar als 1 und Dezember als 12 dargestellt wird.
dayDer ganzzahlige Ausdruck, der bei Erstellung eines Datums als Tag verwendet werden soll, normalerweise im Bereich von 1 bis 31.
Nutzungshinweise¶
DATE_FROM_PARTS verarbeitet normalerweise Werte in „normalen“ Bereichen (z. B. Monate 1-12, Tage 1-31), kann aber auch Werte außerhalb dieser Bereiche verarbeiten. So können Sie zum Beispiel den N-ten Tag in einem Jahr auswählen, um bestimmte Berechnungen zu vereinfachen.
Jahres-, Monats- und Tageswerte können negativ sein (z. B. um ein Datum N Monate vor einem bestimmten Datum zu berechnen). Das Verhalten negativer Zahlen ist nicht ganz intuitiv. Weitere Informationen dazu finden Sie im Abschnitt „Beispiele“.
Beispiele¶
Komponenten in normalen Bereichen:
SELECT DATE_FROM_PARTS(1977, 8, 7); +-----------------------------+ | DATE_FROM_PARTS(1977, 8, 7) | |-----------------------------| | 1977-08-07 | +-----------------------------+
Komponenten außerhalb normaler Bereiche:
100. Tag (ab dem 1. Januar 2010)
24 Monate (ab dem 1. Januar 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 | +-------------------------------+----------------------------------+
Komponenten mit null oder negativen Zahlen:
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 | +-------------------------------+