# 第113章 SQL函数 QUARTER 日期函数,它将一年中的季度作为日期表达式的整数返回。 # 大纲 ``` {fn QUARTER(date-expression)} ``` # 参数 - `date-expression` - 表达式,它是列的名称、另一个标量函数的结果,或者是日期或时间戳文字。 # 描述 `QUARTER` 返回一个从 `1` 到 `4` 的整数。季度是针对 日期整数、$HOROLOG 或 `$ZTIMESTAMP` 值、ODBC 格式日期字符串或时间戳计算的。 日期表达式时间戳可以是数据类型 `%Library.PosixTime`(编码的 64 位有符号整数),也可以是数据类型 `%Library.TimeStamp` (`yyyy-mm-dd hh:mm:ss.fff`)。 四个季度的时间段如下: Quarter| Period (inclusive) ---|--- 1 |January 1 to March 31 (90 or 91 days) 2| April 1 to June 30 (91 days) 3| July 1 to September 30 (92 days) 4| October 1 to December 31 (92 days) `QUARTER` 基于日期时间字符串的月份部分。但是,所有日期表达式都经过验证,并且必须包含 `1` 到 `12` 范围内的月份以及指定月份和年份的有效日期值。否则,将生成 `SQLCODE -400` 错误 ` `。 `date-expression` 的时间部分可以省略,但如果存在则必须有效。 使用 `DATEPART` 或 `DATENAME` 函数可以返回相同的季度信息。可以使用 `DATEADD` 或 `TIMESTAMPADD` 函数将日期增加指定的季度数。 也可以使用 `QUARTER()` 方法调用从 `ObjectScript` 调用此函数: ``` $SYSTEM.SQL.Functions.QUARTER(date-expression) ``` # 示例 以下示例均返回数字 `1`,因为日期(`2` 月 `22` 日)位于该年的第一季度: ```sql SELECT {fn QUARTER('2018-02-22')} AS ODBCDateQ 1 ``` ```sql SELECT {fn QUARTER(64701)} AS HorologDateQ 1 ``` 以下示例均返回当前季度: ```sql SELECT {fn QUARTER({fn NOW()})} AS Q_Now, {fn QUARTER(CURRENT_DATE)} AS Q_CurrD, {fn QUARTER(CURRENT_TIMESTAMP)} AS Q_CurrTstamp, {fn QUARTER($ZTIMESTAMP)} AS Q_ZTstamp, {fn QUARTER($HOROLOG)} AS Q_Horolog 1 ```