第四十七章 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检查提供的日期是否为有效日期。年份必须介于0001和9999之间(包括0001和9999)、月01到12和适合该月的日期(例如,02/29仅在闰年有效)。如果日期无效,DAYNAME将发出SQLCODE-400错误(发生致命错误)。
可以使用DATENAME函数返回星期几的信息。可以使用TO_DATE检索带有其他日期元素的日期名称或日期名称缩写。要返回与星期几对应的整数,请使用DAYOFWEEK DATEPART或TO_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