文章
姚 鑫 · 二月 7 阅读大约需 2 分钟

第四十七章 SQL函数 DAYNAME

第四十七章 SQL函数 DAYNAME

Date函数,它返回日期表达式的星期几的名称。

大纲

{fn DAYNAME(date-expression)}

参数

  • date-expression - 计算结果为日期整数、ODBC日期或时间戳的表达式。该表达式可以是列名、另一个标量函数的结果或日期或时间戳文字。

描述

DAYNAME返回与指定日期对应的日期的名称。返回值为字符串,最大长度为15。默认返回的日期名称为:Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday

要更改这些默认日期名称值,请使用带有WEEKDAY_NAME选项的SET OPTION命令。

日期名称是针对日期整数、$HOROLOG$ZTIMESTAMP值、ODBC格式日期字符串或时间戳计算的。

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

时间戳的时间部分不计算,可以省略。

DAYNAME检查提供的日期是否为有效日期。年份必须介于00019999之间(包括00019999)、月01到12和适合该月的日期(例如,02/29仅在闰年有效)。如果日期无效,DAYNAME将发出SQLCODE-400错误(发生致命错误)。

可以使用DATENAME函数返回星期几的信息。可以使用TO_DATE检索带有其他日期元素的日期名称或日期名称缩写。要返回与星期几对应的整数,请使用DAYOFWEEK DATEPARTTO_DATE

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

$SYSTEM.SQL.Functions.DAYNAME(date-expression)

示例

以下示例都返回字符串星期三,因为日期的日期(2018年2月21日)是星期三。第一个示例采用时间戳字符串:

SELECT {fn DAYNAME('2018-02-21 12:35:46')} AS Weekday

Wednesday

第二个示例采用日期整数:

SELECT {fn DAYNAME(64700)} AS Weekday

Wednesday

以下示例均返回一周中当前日期的名称:

SELECT {fn DAYNAME({fn NOW()})} AS Wd_Now,
       {fn DAYNAME(CURRENT_DATE)} AS Wd_CurrDate,
       {fn DAYNAME(CURRENT_TIMESTAMP)} AS Wd_CurrTstamp,
       {fn DAYNAME($ZTIMESTAMP)} AS Wd_ZTstamp,
       {fn DAYNAME($HOROLOG)} AS Wd_Horolog

Saturday    Saturday    Saturday    Saturday    Saturday

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

以下嵌入式SQL示例显示DAYNAME如何响应无效日期(2017年不是闰年):

ClassMethod DayName()
{
    s testdate = "2017-02-29"
    &sql(
        SELECT {fn DAYNAME(:testdate)}
        INTO :a)
    if SQLCODE '= 0 {
        w !,"Error code ",SQLCODE 
    } else {
        w !,"returns: ",a 
    }
    QUIT
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).DayName()

Error code -400
0
0 12
讨论 (0)1
登录或注册以继续