LAST_DAY

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_NTZSTRING类型日期值。

    STRING类型作为输入参数时,日期格式需包含yyyy-mm-dd

  • date_part:选填。STRING类型常量。指定计算的时间单位。若未填,默认返回该日期所在月份的最后一天日期。此字段支持的取值有:

    时间单位

    取值

    yearyyyy

    ISO

    isoyear采用ISO 8601周编号年边界。ISO年的边界是第一周的星期一,星期四属于相应的公历年。

    季度

    quarterq

    monthmonmm

    • week:以周一为一周的第一天,等效于week(monday)

    • week(weekday):以指定的星期几(weekday)为一周的第一天。

      有效取值:周日(SUNDAY)、周一(MONDAY)、周二(TUESDAY)、周三(WEDNESDAY)、周四(THURSDAY)、周五(FRIDAY)以及周六(SATURDAY)。

    ISO

    isoweek采用ISO 8601所规定的周边界。ISO标准下的周从周一开始算起。

返回值说明

返回DATESTRING类型。返回规则如下:

  • 当指定date_part时,返回DATE类型的日期值;未指定date_part时,返回STRING类型日期值。返回格式为yyyy-mm-dd

  • dateDATE、DATETIME、TIMESTAMP、TIMESTAMP_NTZSTRING类型,或格式不符合要求时,返回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函数属于日期函数,更多日期计算、日期转换的相关函数请参见日期函数