文章目录


第四十七章 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