Todos os produtos
Search
Central de documentação

MaxCompute:LAST_DAY

Última atualização: Jun 26, 2026

Retorna o último dia da unidade de tempo especificada para uma data. Se chamada sem date_part, retorna o último dia do mês.

-- Returns 2025-10-31
SELECT LAST_DAY('2025-10-01');

Sintaxe

DATE|STRING LAST_DAY(DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ|STRING <date>[, STRING <date_part>])

Parâmetros

date

Obrigatório. Tipos aceitos: DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ ou STRING.

Se a entrada for STRING, o formato da data deve incluir yyyy-mm-dd.

date_part

Opcional. Constante STRING que especifica a unidade de tempo. Padrão: month.

Unidade de tempo

Valores aceitos

Ano

year ou yyyy

Ano ISO

isoyear — usa o sistema de numeração de semanas ISO 8601. O ano inicia na segunda-feira da primeira semana que contém a primeira quinta-feira do ano civil gregoriano.

Trimestre

quarter ou q

Mês

month, mon ou mm

Semana

week — inicia na segunda-feira (equivalente a week(monday)). Para definir um dia inicial personalizado, use week(weekday), em que weekday é um dos seguintes: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY.

Semana ISO

isoweek — usa os limites de semana ISO 8601. Inicia na segunda-feira.

Comportamento das variantes de semana

A consulta abaixo compara week, week(sunday), week(monday) e isoweek para a mesma entrada (2025-06-27, uma sexta-feira):

SELECT LAST_DAY('2025-06-27 11:40:00','week(sunday)') AS ld_week_sunday,
       LAST_DAY('2025-06-27 11:40:00','isoweek')      AS ld_isoweek,
       LAST_DAY('2025-06-27 11:40:00','week')         AS ld_week,
       LAST_DAY('2025-06-27 11:40:00','week(monday)') AS ld_week_monday;

Resultado:

+----------------+------------+------------+----------------+
| ld_week_sunday | ld_isoweek | ld_week    | ld_week_monday |
+----------------+------------+------------+----------------+
| 2025-06-28     | 2025-06-29 | 2025-06-29 | 2025-06-29     |
+----------------+------------+------------+----------------+

week(sunday) considera o sábado como o último dia da semana. Assim, a semana que contém 2025-06-27 (sexta-feira) termina em 2025-06-28 (sábado). Como week, week(monday) e isoweek iniciam na segunda-feira, a semana termina no domingo, 2025-06-29.

Valor de retorno

O tipo de retorno depende da presença de date_part:

  • Com date_part: retorna um valor DATE.

  • Sem date_part: retorna uma STRING no formato yyyy-mm-dd.

Se date for NULL, a função retornará um erro. Se o valor ou formato de date for inválido, a função retornará NULL ou um erro.

Exemplos

Exemplo 1: Entrada de data básica

-- Returns 2025-03-31
SELECT LAST_DAY('2025-03-04');

-- Returns 2025-07-31
SELECT LAST_DAY('2025-07-04 11:40:00');

Exemplo 2: Entrada NULL e inválida

-- Returns an error (NULL input)
SELECT LAST_DAY(NULL,'isoyear');

-- Returns NULL (format does not include yyyy-mm-dd)
SELECT LAST_DAY('20250304');

Exemplo 3: Especificação de unidade de tempo

-- Returns 2025-03-31
SELECT LAST_DAY('2025-03-27 11:40:00','MONTH');

-- Returns 2025-12-31
SELECT LAST_DAY(DATETIME '2025-03-27 11:40:00','YEAR');

-- Returns 2025-03-31
SELECT LAST_DAY(DATETIME '2025-03-27 11:40:00','QUARTER');

Funções relacionadas

LAST_DAY é uma função de data. Para outras funções de cálculo e conversão de datas, consulte Funções de data.