文章
姚 鑫 · 二月 8 阅读大约需 3 分钟

第四十八章 SQL函数 DAYOFMONTH

第四十八章 SQL函数 DAYOFMONTH

返回日期表达式的月份日期的日期函数。

大纲

{fn DAYOFMONTH(date-expression)}

参数

  • date-expression - 要从中返回月值日期的日期或时间戳表达式。作为列名、另一个标量函数的结果或日期或时间戳文字的表达式。

描述

DAYOFMONTH131之间的整数形式返回每月的第几天。日期表达式可以是日期整数、$HOROLOG$ZTIMESTAMP值、ODBC格式的日期字符串或时间戳。

日期表达式时间戳可以是数据类型%Library.PosiTime(编码的64位有符号整数)或数据类型%Library.TimeStamp(yyyy-mm-dd hh:mm:ss.fff)

TIMESTAMP$HOROLOG字符串的时间部分不计算,可以省略。

DAYOFMONTHDAY函数在功能上是相同的。

也可以使用DAYOFMONTH()方法调用从ObjectScript调用此函数:

DHC-APP>  w $SYSTEM.SQL.DAYOFMONTH("2018-02-25")
25

Timestamp date-expression

时间戳字符串的日(Dd)部分应该是介于131之间的整数。但是,不会对用户提供的值进行范围检查。按照指定的方式返回大于31的数字和分数。由于(-)用作分隔符,因此不支持负数。输入上的前导零是可选的;输出上不显示前导零。

当日期部分为‘0’‘00’或非数字值时,DAYOFMONTH返回NULL。如果完全省略日期字符串的日期部分(‘yyyy-mm hh:mm:ss’),或者如果没有提供日期表达式,也会返回NULL

可以使用以下SQL标量函数返回日期时间字符串的元素:年、月、DAYOFMONTH(或日)、小时、分钟、秒。使用DATEPARTDATENAME函数可以返回相同的元素。DATEPARTDATENAME对日期值执行值和范围检查。

$HOROLOG日期表达式

在计算$HOROLOG值的月份日期时,DAYOFMONTH会计算闰年差异,包括世纪日调整:2000年是闰年,19002100不是闰年。

DAYOFMONTH可以将1840年12月31日之前的日期表达式值处理为负整数。下面的示例显示了这一点:

SELECT {fn DAYOFMONTH(-306)} AS DayOfMonthFeb,    /* February 29, 1840 */
       {fn DAYOFMONTH(-305)} AS DayOfMonthMar,    /* March 1, 1840     */
       {fn DAYOFMONTH(-127410)} AS DayOfMonthFeb  /* February 29, 1492 */

29  1   29

LAST_DAY函数返回指定日期的月份最后一天的日期(以$HOROLOG格式表示)。

示例

以下示例返回数字25,因为指定的日期是该月的第25天:

SELECT {fn DAYOFMONTH('2018-02-25')} AS DayNumTS,
       {fn DAYOFMONTH(64704)} AS DayNumH

25  25

下面的示例还返回数字25,表示该月中的某一天。省略年份,但分隔符(-)用作占位符:

SELECT {fn DAYOFMONTH('-02-25 11:45:32')} AS DayNum

25

以下示例返回<null>

SELECT{fn DAYOFMONTH('2018-02-00 11:45:32')} AS DayNum
SELECT {fn DAYOFMONTH('2018-02 11:45:32')} AS DayNum
SELECT {fn DAYOFMONTH('11:45:32')} AS DayNum

以下DAYOFMONTH示例均返回当月的当前日期:

SELECT {fn DAYOFMONTH({fn NOW()})} AS DoM_Now,
       {fn DAYOFMONTH(CURRENT_DATE)} AS DoM_CurrD,
       {fn DAYOFMONTH(CURRENT_TIMESTAMP)} AS DoM_CurrTS,
       {fn DAYOFMONTH($HOROLOG)} AS DoM_Horolog,
       {fn DAYOFMONTH($ZTIMESTAMP)} AS DoM_ZTS

8   8   8   8   8

请注意,$ZTIMESTAMP返回协调世界时(UTC)。其他时间表达式值返回本地时间。这可能会影响DAYOFMONTH值。

下面的示例显示了前导零被取消。它返回长度为1或2的值,具体取决于月值的日期:


SELECT LENGTH({fn DAYOFMONTH('2018-02-05')}), LENGTH({fn DAYOFMONTH('2018-02-15')}) 1 2
0
0 16
讨论 (0)1
登录或注册以继续