日期/时间函数,它返回一个字符串,表示日期/时间表达式中指定部分的值。
datepart
- 要返回的日期/时间信息类型。datepart
指定为文字或主机变量。date-expression
- 要返回datepart
值的日期、时间或时间戳表达式。datepart
类型的值。DATENAME
函数返回日期/时间值中指定部分的名称(例如“June”
)。
结果作为数据类型VARCHAR(20)
返回。
如果结果是数字(例如“23”
表示当天),它仍然作为VARCHAR(20)
字符串返回。
要以整数形式返回此信息,请使用DATEPART
。
要返回包含多个日期部分的字符串,请使用TO_DATE
。
请注意,DATENAME
是为Sybase和Microsoft SQL Server兼容性而提供的。
这个函数也可以通过调用DATENAME()
方法从ObjectScript调用:
$SYSTEM.SQL.Functions.DATENAME(datepart,date-expression)
datepart
参数可以是包含一个(且仅包含一个)以下日期/时间组件的字符串,可以是全名(date Part
列),也可以是缩写(缩写列)。
这些datepart
组件名称和缩写不区分大小写。
Date Part | Abbreviations | Return Values |
---|---|---|
year | yyyy, yy | 0001-9999 |
quarter | qq, q | 1-4 |
month | mm | January,…December |
week | wk, ww | 1-53 |
weekday | dw | Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday |
dayofyear | dy, y | 1-366 |
day | dd, d | 1-31 |
hour | hh | 0-23 |
minute | mi, n | 0-59 |
second | ss, s | 0-59 |
millisecond | ms | 0-999 (with precision of 3) |
microsecond | mcs | 0–999999 (with precision of 6) |
nanosecond | ns | 0–999999999 (with precision of 9) |
如果将无效的datepart
值指定为文字,则会发出SQLCODE -8
错误码。
但是,如果提供一个无效的datepart
值作为主机变量,则不会发出SQLCODE
错误,并且DATENAME
函数返回一个NULL
值。
上表显示了不同日期部分的默认返回值。
通过使用带有不同时间和日期选项的SET OPTION
命令,可以修改其中几个日期部分的返回值。
week
:可以配置为使默认算法或ISO 8601标准算法确定给定日期的年度星期。
weekday
:对于weekday
的默认设置是将周日指定为一周的第一天(工作日=1)。
但是,可以将一周的第一天配置为另一个值,或者可以应用指定星期一为一周的第一天的ISO 8601标准。
millisecond
:返回一个包含毫秒数(千分之一秒)的字符串。
如果日期表达式的精度超过3
个小数位数,将其截断为3
个数字,并将该数字作为字符串返回。
如果日期表达式具有指定的精度,但精度小于3
个小数位数,则 0
将其填充为3
个数字,并将该数字作为字符串返回。
微秒和纳秒执行类似的截断和填充零。
可以将datepart
指定为带引号的字符串或不带引号的字符串。
这些语法变体执行的操作略有不同:
DATENAME('month','2018-02-25')
:在创建缓存查询时,datepart
被视为一个字面值。DATENAME(month,'2018-02-25')
:在创建缓存查询时,datepart
被视为关键字。date-expression
参数可以是以下任何一种格式:
%Date
logical value (+$H
)
%PosixTime
(%Library.PosixTime
) logical value (an encoded 64-bit signed integer)
%TimeStamp
(%Library.TimeStamp
) logical value (YYYY-MM-DD HH:MM:SS.FFF
), also known as ODBC format.
%String
(or compatible) value
%String
(或compatible)值可以是以下任何格式:
99999,99999 ($H format)
Sybase/SQL-Server-date Sybase/SQL-Server-time
Sybase/SQL-Server-time Sybase/SQL-Server-date
Sybase/SQL-Server-date (default time is 00:00:00)
Sybase/SQL-Server-time (default date is 01/01/1900)
Sybase/SQL-Server-date是以下五种格式之一:
mmdelimiterdddelimiter[yy]yy dd Mmm[mm][,][yy]yy dd [yy]yy Mmm[mm] yyyy Mmm[mm] dd yyyy [dd] Mmm[mm]
其中分隔符是斜杠(/
)、连字符(-
)或句号(.
)。
Sybase/SQL-Server-time表示以下三种格式之一:
HH:MM[:SS:SSS][{AM|PM}] HH:MM[:SS.S] HH['']{AM|PM}
如果date-expression
指定了时间格式但没有指定日期格式,则DATENAME
的默认值为1900-01-01
,其中weekday
的值为Monday
。
DATENAME
对输入值执行以下检查。
如果一个值检查失败,则返回null
字符串。
yyyy-mm-dd
)、时间字符串(hh:mm:ss
)或日期和时间字符串(yyyy-mm-dd hh:mm:ss
)组成。Year
值,但如果指定了无效的时间字符串,则无法返回Year值。Day
值,则不能返回Year
值。“hh: mm: ss”,“hh: mm:”
、“hh: mm”,“hh:: ss”,“hh::”
、“hh”
,和“::”
都是有效的。Hour
元素,date-expression
必须没有字符串的日期部分,并且必须保留至少一个分隔符(:
)。“02-29”
仅在指定的年份为闰年时有效。Hour
值必须包括前导0,如果它是datetime
字符串的一部分。Day
值为“07”
或“7”
是有效的,但“007”
、“7.0”
或“7a”
无效。date-expression
指定了时间格式但没有指定日期格式,则DATENAME
不会对时间组件值执行范围验证。在下面的例子中,每个DATENAME
返回'Wednesday'
,因为它是指定日期的星期几('dw'
):
SELECT DATENAME('dw','2018-02-21') AS DayName,DATENAME(dw,'02/21/2018') AS DayName,DATENAME('DW',64700) AS DayNameWednesday Wednesday Wednesday
下面的例子返回’December'
,因为它是指定日期的月份名称('mm'
):
SELECT DATENAME('mm','2018-12-20 12:00:00') AS MonthNameDecember
下面的示例返回'2018'
(字符串形式),因为它是指定日期的年份('yy'
):
SELECT DATENAME('yy','2018-12-20 12:00:00') AS Year2018
注意,上面的例子使用了日期部分的缩写。
但是,你可以指定全名,如下例所示:
SELECT DATENAME('Q',$HOROLOG) AS Q,DATENAME('WK',$HOROLOG) AS WkCnt,DATENAME('DY',$HOROLOG) AS DayCnt1 6 35
下面的嵌入式SQL示例将datepart
和date-expression
作为宿主变量传入:
ClassMethod DateName()
{s a="year"s b=$HOROLOG&sql(SELECT DATENAME(:a,:b) INTO :c)w "this year is: ",c
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).DateName()
this year is: 2022
下面的示例使用子查询从出生日期为星期三的Sample.Person
返回记录:
SELECT Name AS WednesdaysChild,DOB
FROM (SELECT Name,DOB,DATENAME('dw',DOB) AS Wkday FROM Sample.Person)
WHERE Wkday='Wednesday'
ORDER BY DOB
本文发布于:2024-01-29 02:03:23,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170646500611931.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |