LAST_DAY函數用於計算日期date所在時間單位date_part最後一天的日期。
命令格式
DATE|STRING LAST_DAY(DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ|STRING <date>[, STRING <date_part>])
-- 標準樣本。
-- 返回2025-10-31。
SELECT LAST_DAY('2025-10-01');參數說明
date:必填。DATE、DATETIME、TIMESTAMP、TIMESTAMP_NTZ或STRING類型日期值。
STRING類型作為輸入參數時,日期格式需包含
yyyy-mm-dd。date_part:選填。STRING類型常量。指定計算的時間單位。若未填,預設返回該日期所在月份的最後一天日期。此欄位支援的取值有:
時間單位
取值
年
year或yyyyISO年
isoyear採用ISO 8601周編號年邊界。ISO年的邊界是第一周的星期一,星期四屬於相應的西曆年。季度
quarter或q月
month或mon或mm周
week:以周一為一周的第一天,等效於week(monday)week(weekday):以指定的星期幾(weekday)為一周的第一天。有效取值:周日(SUNDAY)、周一(MONDAY)、周二(TUESDAY)、周三(WEDNESDAY)、周四(THURSDAY)、周五(FRIDAY)以及周六(SATURDAY)。
ISO周
isoweek採用ISO 8601所規定的周邊界。ISO標準下的周從周一開始算起。
傳回值說明
返回DATE或STRING類型。返回規則如下:
當指定date_part時,返回DATE類型的日期值;未指定date_part時,返回STRING類型日期值。返回格式為
yyyy-mm-dd。date非DATE、DATETIME、TIMESTAMP、TIMESTAMP_NTZ或STRING類型,或格式不符合要求時,返回NULL或報錯。
date值為NULL時,返回報錯。
使用樣本
樣本1:基礎日期輸入。
-- 返回2025-03-31。 SELECT LAST_DAY('2025-03-04'); -- 返回2025-07-31。 SELECT LAST_DAY('2025-07-04 11:40:00');樣本2:傳入NULL值或無效字串。
-- 返回報錯。 SELECT LAST_DAY(NULL,'isoyear'); -- 返回NULL。 SELECT LAST_DAY('20250304');樣本3:指定時間單位,取值例如'MONTH'、'YEAR'、'QUARTER'。
-- 返回2025-03-31。 SELECT LAST_DAY('2025-03-27 11:40:00','MONTH'); -- 返回2025-12-31。 SELECT LAST_DAY(DATETIME '2025-03-27 11:40:00','YEAR'); -- 返回2025-03-31。 SELECT LAST_DAY(DATETIME '2025-03-27 11:40:00','QUARTER');樣本4:week、isoweek參數值對比。
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; -- 返回結果。 +----------------+------------+------------+----------------+ | ld_week_sunday | ld_isoweek | ld_week | ld_week_monday | +----------------+------------+------------+----------------+ | 2025-06-28 | 2025-06-29 | 2025-06-29 | 2025-06-29 | +----------------+------------+------------+----------------+
相關函數
LAST_DAY函數屬於日期函數,更多日期計算、日期轉換的相關函數請參見日期函數。