- Categorias:
DATE_FROM_PARTS¶
Cria uma data a partir de componentes numéricos individuais que representam o ano, o mês e o dia do mês.
- Aliases:
DATEFROMPARTS
Sintaxe¶
DATE_FROM_PARTS( <year>, <month>, <day> )
Argumentos¶
year
A expressão inteira a ser usada como um ano para a construção de uma data.
month
A expressão inteira a ser usada como um mês para construir uma data, com janeiro representado como 1, e dezembro como 12.
day
A expressão inteira a ser usada como um dia para construir uma data, geralmente na faixa 1-31.
Notas de uso¶
DATE_FROM_PARTS é normalmente usado para lidar com valores em faixas “normais” (por exemplo, 1-12 meses, 1-31 dias), mas também lida com valores de fora dessas faixas. Isto permite, por exemplo, escolher o enésimo dia em um ano, que pode ser usado para simplificar alguns cálculos.
Os valores de ano, mês e dia podem ser negativos (por exemplo, para calcular uma data N meses antes de uma data específica). O comportamento dos números negativos não é totalmente intuitivo; consulte a seção Exemplos para obter detalhes.
Exemplos¶
Componentes em faixas normais:
SELECT DATE_FROM_PARTS(1977, 8, 7); +-----------------------------+ | DATE_FROM_PARTS(1977, 8, 7) | |-----------------------------| | 1977-08-07 | +-----------------------------+
Componentes fora da faixa normal:
Centésimo dia (a partir de 1.º de janeiro de 2010)
24 meses (a partir de 1.º de janeiro de 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 | +-------------------------------+----------------------------------+
Componentes com números zero ou negativos:
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 | +-------------------------------+