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 |
|
|
Ano ISO |
|
|
Trimestre |
|
|
Mês |
|
|
Semana |
|
|
Semana ISO |
|
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.