# 第七十一章 SQL函数 LAST_DAY 日期函数,它为日期表达式返回一个月的最后一天的日期。 # 大纲 ```java LAST_DAY(date-expression) ``` # 参数 - `date-expression` - 表达式,它是列的名称、另一个标量函数的结果或日期或时间戳文字。 # 描述 `LAST_DAY`以整数形式返回指定月份的最后一天,格式为`$HOROLOG`。 计算闰年差异,包括世纪日调整:`2000`是闰年,`1900`和`2100`不是闰年。 日期表达式可以是一个日期整数、一个`$HOROLOG`或`$ZTIMESTAMP`值、一个ODBC格式的日期字符串或一个时间戳。 日期表达式时间戳可以是数据类型`%Library.PosiTime`(编码的64位有符号整数)或数据类`型%Library.TimeStamp(yyyy-mm-dd hh:mm:ss.fff)`。 `%TIMESTAMP`字符串的时间部分是可选的。 指定无效日期时,`LAST_DAY`返回0(显示模式为`12/31/1840`):日或月为零;大于12的月;或大于当年该月天数的日。年份必须在`0001`到`9999`之间。 也可以使用`lastday()`方法调用从ObjectScript调用此函数: ```java WRITE $SYSTEM.SQL.Functions.LASTDAY("2018-02-22"),! WRITE $SYSTEM.SQL.Functions.LASTDAY(64701) ``` # 示例 以下示例将该月的最后一天作为日期整数返回。该值是显示为整数还是日期字符串取决于当前的SQL显示模式设置。 以下两个示例都返回数字`59594`(对应于`‘2004-02-29’`),因为指定日期的月份的最后一天是2月29(2004年是闰年): ```sql SELECT LAST_DAY('2004-02-25') 2004/2/29 0:00:00 ``` ```sql SELECT LAST_DAY(59590) 2004/2/29 0:00:00 ``` 以下示例均返回与当月最后一天对应的日期整数: ```sql SELECT LAST_DAY({fn NOW()}) AS LD_Now, LAST_DAY(CURRENT_DATE) AS LD_CurrDate, LAST_DAY(CURRENT_TIMESTAMP) AS LD_CurrTstamp, LAST_DAY($ZTIMESTAMP) AS LD_ZTstamp, LAST_DAY($HOROLOG) AS LD_Horolog 2022/2/28 0:00:00 2022/2/28 0:00:00 2022/2/28 0:00:00 2022/2/28 0:00:00 2022/2/28 0:00:00 ```