LAST_DAY 函数

LAST_DAY 函数需要一个 DATE 或 DATETIME 表达式作为它的唯一参数。它返回它的参数指定的那个月的最后一天的日期。

此返回的值的数据类型与参数的数据类型相同。返回的值与参数之间的差为那个月剩余的天数。

下列查询返回当前日期的 DATE 表示、当前月中最后一天的日期,以及当前月中最后一天之前的天数(由第二个 DATE 值减去第一个计算):
SELECT TODAY AS today, LAST_DAY(TODAY) AS last,
          LAST_DAY(TODAY) - TODAY AS days_left 
          FROM systables WHERE tabid = 1;
如果在 2008 年 3 月 12 日发出了该查询,以 MDY4/ 作为缺省的语言环境的 DBDATE 设置,则它会返回下列信息:
today      last         days_left
          
          03/12/2008 03/31/2008          19
        
在此示例的 SELECT 语句中,在 Projection 子句中 TODAY 运算符与标识符 today 之间没有名称冲突,因为 AS 关键字向 GBase 8s 表明 today 为一显示标签。
如果您使用主变量来存储 LAST_DAY 的参数,但在准备时刻不知道该参数的数据类型,则 GBase 8s 假设该数据类型为 DATETIME YEAR TO FRACTION(5)。如果在运行时刻,在已准备了该语句之后,用户为该主变量提供 DATE 值,则发出错误 -9750。要防止发生此错误,请通过使用强制转型来指定该主变量的数据类型,如在此程序片段中所示:
sprintf(query, ", 
          "select last_day(?::date) from mytab");
          EXEC SQL prepare selectq from :query;
          EXEC SQL declare select_cursor cursor for selectq;
          EXEC SQL open select_cursor using :hostvar_date_input;
          
          EXEC SQL fetch select_cursor into :var_date_output;