文章目录


第五十章 SQL函数 DAYOFWEEK

​Date​​函数,它返回日期表达式的整型日期。

参数

  • ​date-expression​​ - 日期表达式,它是列名、另一个标量函数的结果或日期或时间戳文字。

描述

​DAYOFYEAR​​​返回一个介于1到366之间的整数,该整数对应于给定日期表达式的一年中的第几天。​​DAYOFYAR​​计算闰年日期。

根据日期整数、​​$HOROLOG​​​或​​$ZTIMESTAMP​​值、ODBC格式日期字符串或时间戳计算一年中的日期。

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

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

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

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

SELECT {fn DAYOFYEAR(-306)} AS LastDayFeb, 
{fn DAYOFYEAR(-305)} AS FirstDayMar


60 61

最早有效日期表达式为​​-672045(0001-01)​​。

可以使用​​DATEPART​​​或​​DATENAME​​​函数返回当天计数。​​DATEPART​​​和​​DATENAME​​对日期表达式执行值和范围检查。

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

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

示例

以下示例都返回数字​​64​​​,因为日期表达式(​​2016年3月4日​​​)中的日期是一年中的第​​64​​天(自动计算闰年日期):

SELECT {fn DAYOFYEAR('2016-03-04 12:45:37')} AS DayCount

64
SELECT {fn DAYOFYEAR(63981)} AS DayCount

64

以下示例均返回当天的计数:

SELECT {fn DAYOFYEAR({fn NOW()})} AS DNumNow,
{fn DAYOFYEAR(CURRENT_DATE)} AS DNumCurrD,
{fn DAYOFYEAR(CURRENT_TIMESTAMP)} AS DNumCurrTS,
{fn DAYOFYEAR($HOROLOG)} AS DNumHorolog,
{fn DAYOFYEAR($ZTIMESTAMP)} AS DNumZTS

42 42 42 42 42

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

下面的示例使用子查询返回按每个人的生日日期排序的员工记录:

SELECT Name,DOB
FROM (SELECT Name,DOB,{fn DAYOFYEAR(DOB)} AS BDay FROM Sample.Employee)
ORDER BY BDay

第五十章 SQL函数 DAYOFWEEK_database