好人不需要规则。
神秘博士
要成为日期和时间的主人并不是一件容易的事,在任何编程语言中,这总是一个问题,有时会让人感到困惑,我们将澄清并提出一些提示,使这项任务尽可能简单。
坐上TARDIS,我将把你变成一个时间领主。

好人不需要规则。
神秘博士
要成为日期和时间的主人并不是一件容易的事,在任何编程语言中,这总是一个问题,有时会让人感到困惑,我们将澄清并提出一些提示,使这项任务尽可能简单。
坐上TARDIS,我将把你变成一个时间领主。

将数据作为JSON对象返回的转换函数。
JSON_OBJECT(key:value [,key:value][,...] [NULL ON NULL | ABSENT ON NULL])
key:value - 键:值对或逗号分隔的键:值对列表。键是由单引号分隔的用户指定的文字字符串。值可以是列名、聚合函数、算术表达式、数字或字符串文字或文字NULL。ABSENT ON NULL
- 可选-指定如何在返回的JSON对象中表示空值的关键字短语。(缺省值)表示带有单词(未引号)的(缺少)数据。在上缺失将从对象中省略数据;当为且不保留占位符逗号时,它将删除对。此关键字短语对空字符串值没有影响。接受逗号分隔的键:值对列表(例如,),并返回包含这些值的JSON对象。可以指定任何单引号字符串作为键名;不强制任何命名约定或对键名进行唯一性检查。可以为值指定列名或其他表达式。
可以在语句中与其他类型的SELECT-Items结合使用。可以在可以使用SQL函数的其他位置指定,例如在子句中。
返回的对象格式如下:
{ "key1" : "value1" , "key2" : "value2" , "key3" : "value3" }
以JSON数组形式返回数据的转换函数。
JSON_ARRAY(expression [,expression][,...] [NULL ON NULL | ABSENT ON NULL])
expression - 表达式或逗号分隔的表达式列表。这些表达式可以包括列名、聚合函数、算术表达式、文字和文字NULL。ABSENT ON NULL
- 可选-指定如何在返回的JSON数组中表示空值的关键字短语。(缺省值)表示带有单词(未引号)的(缺少)数据。在上不存在将从数组中省略空数据;它不会保留占位符逗号。此关键字短语对空字符串值没有影响。接受表达式或(更常见的)逗号分隔的表达式列表,并返回包含这些值的数组。可以在语句中与其他类型的结合使用。可以在可以使用SQL函数的其他位置指定,例如在子句中。
返回的数组格式如下:
[ element1 , element2 , element3 ]
Json_array以字符串(用双引号括起来)或数字形式返回每个数组元素值。数字以规范格式返回。数字字符串以文字形式返回,用双引号括起来。所有其他数据类型(例如,或)都作为字符串返回。
不支持将星号()语法作为指定表中所有字段的方式。它支持COUNT(*)聚合函数。
返回的数组列被标记为表达式(默认情况下);可以为指定列别名。
测试有效数字的数值函数。
ISNUMERIC(check-expression)
check-expression - 要计算的表达式。ISNUMERIC返回SMALLINT数据类型。
计算并返回下列值之一:
check表达式是有效数字,则返回1。有效数字可以是数字表达式,也可以是表示有效数字的字符串。
+-+34这样的数值表达式是有效的数字。check-expression不是有效数字,则返回0。任何包含非数字字符的字符串都不是有效数字。具有多个前导符号的数字字符串(如)不会被计算为有效数字。编码列表始终返回0,即使其元素是有效数字也是如此。空字符串返回0。如果科学记数法指数大于308(308-(整数数)),会生成,指数超出范围错误。例如,和都会生成此错误代码。如果小于或等于的指数数字字符串返回1,则大于的指数数字字符串返回0。
函数与ObjectScript 函数非常相似。但是,当输入值为NULL时,这两个函数返回不同的值。
测试NULL并返回相应表达式的函数。
ISNULL(check-expression,replace-expression)
check-expression - 要计算的表达式。replace-expression - Check-Expression为NULL时返回的表达式。返回与相同的数据类型。
计算并返回以下两个值之一:
Replace-Expression。的数据类型应该与的数据类型兼容。
请注意,ISNULL函数与函数相同,后者是为了与Oracle兼容而提供的。
某些检查表达式数据类型需要从逻辑模式转换为ODBC模式或显示模式。例如日期和时间数据类型。如果替换表达式值不是相同的数据类型,则不能在ODBC模式或显示模式下转换此值,并生成SQLCODE错误:日期数据类型为;时间数据类型为。例如,不能在ODBC模式或显示模式下执行;它会发出错误,并显示 。要在ODBC模式或显示模式下执行此语句,必须将值强制转换为适当的数据类型:。这将导致日期0,显示为。
下表显示了各种SQL比较函数。如果逻辑比较测试为
返回逻辑格式表达式的格式转换函数。
%INTERNAL(expression)
%INTERNAL expression
expression - 要转换的表达式。
字段名、包含字段名的表达式,或返回可转换数据类型(如DATE或%List)中的值的函数。%INTERNAL将表达式转换为逻辑格式,与当前选择模式(显示模式)无关。逻辑格式是数据的内存格式(对其执行操作的格式)。%INTERNAL通常用于选择列表。
可以在子句中使用,但强烈建议不要使用,因为使用会阻止在指定字段上使用索引,并且会强制所有比较区分大小写,即使该字段有默认排序规则也是如此。
应用会将列标题名称更改为诸如“Expression_1”之类的值;因此,通常需要指定列名别名,如下面的示例所示。
将数据类型%DATE的值转换为整数数据类型值。将数据类型的值转换为数字数据类型值。之所以提供此转换,是因为ODBC或JDBC客户端不识别逻辑和值。
是否转换日期取决于日期字段或函数返回的数据类型。转换CURDATE、、和值。它不转换、、、和值。
不能将流字段指定为ObjectScript一元函数(包括所有格式转换函数,除外)的参数。函数允许将流字段作为表达式值,但不对该流字段执行任何操作。
%INTERNAL
返回子字符串在字符串中的位置的字符串函数,具有可选的搜索起始点和出现次数。
INSTR(string,substring[,start[,occurrence]])
string - 要在其中搜索子字符串的字符串表达式。
它可以是列的名称、字符串字面值或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(如CHAR或VARCHAR2)。1开始计数。
若要从字符串的开头开始搜索,请忽略此参数或指定从1开始。
起始值为0、空字符串、或非数字值会导致返回0。
指定为负数会导致返回。返回数据类型。
在字符串中查找子字符串,并返回子字符串的第一个字符的位置。
位置以整数形式返回,从字符串的开头开始计算。
如果没有找到,则返回0(0)。
如果传递给任何一个参数一个值,将返回。
支持指定作为子字符串搜索的起始点。
INSTR还支持从起始点指定子字符串出现。
是区分大小写的。 使用其中一个大小写转换函数来定位字母或字符串的大写和小写实例。
这个函数也可以通过调用方法从ObjectScript调用:
测试NULL并返回适当表达式的函数。
IFNULL(expression-1,expression-2 [,expression-3])
{fn IFNULL(expression-1,expression-2)}
expression-1 - 要计算以确定是否为NULL的表达式。expression-2 - 如果为NULL,则返回的表达式。NULL返回的表达式。
如果没有指定,则当不是时返回值。返回的数据类型描述如下。
支持IFNULL作为SQL通用函数和标量函数。 请注意,虽然这两个执行非常相似的操作,但它们在功能上是不同的。 SQL通用函数支持三个参数。 ODBC标量函数支持两个参数。 SQL通用函数和ODBC标量函数的双参数形式是不一样的; 当不为空时,它们返回不同的值。
SQL通用函数计算表达式1是否为NULL。 它永远不会返回expression-1:
expression-2。expression-3,则返回。ODBC标量函数计算是否为。
它要么返回expression-1,要么返回:
Time函数,它返回DateTime表达式的小时数。
{fn HOUR(time-expression)}
time-expression - 作为列名、另一个标量函数的结果或字符串或数字文字的表达式。它必须解析为日期时间字符串或时间整数,其中基础数据类型可以表示为%Time、%Timestamp或。Hour返回一个整数,指定给定时间或日期时间值的小时。小时是根据$HOROLOG或值、格式的日期字符串或时间戳计算的。
时间表达式时间戳可以是数据类型(编码的64位有符号整数),也可以是数据类型。
要更改此默认时间格式,请使用SET OPTION命令。
请注意,可以提供时间整数(已用秒数),但不能提供时间字符串()。必须提供日期时间字符串()。可以省略日期时间字符串的秒(:ss)或分钟和秒()部分,但仍返回小时部分。日期时间字符串的时间部分必须是有效的时间值。未验证日期时间字符串的日期部分。
小时以小时表示。小时数()部分应该是介于0到23之间的整数。输入上的前导零是可选的;输出上不显示前导零。
当小时部分为或时,小时返回小时的值。如果没有提供时间表达式,或者如果省略了时间表达式的小时部分(或),也会返回零小时。
同时可以使用或返回信息。
也可以使用 方法调用从ObjectScript调用此函数:
$SYSTEM.SQL.Functions.HOUR(time-expression)
从一系列表达式中返回最大值的函数。
GREATEST(expression,expression[,...])
expression - 解析为数字或字符串的表达式。
对这些表达式的值进行比较。
表达式可以是字段名、文字、算术表达式、主机变量或对象引用。
最多可以列出140个逗号分隔的表达式。GREATEST返回逗号分隔的一系列表达式中的最大值。
表达式按从左到右的顺序求值。
如果只提供一个表达式,则GREATEST返回该值。
如果任何表达式为,则返回。
如果所有表达式值都解析为规范数,则按数值顺序对它们进行比较。
如果引用的字符串包含规范格式的数字,则按数字顺序对其进行比较。
但是,如果引用的字符串包含非规范格式的数字(例如,、或'+4'),则将其作为字符串进行比较。
字符串比较按排序顺序逐字符执行。
任何字符串值都大于任何数字值。
空字符串大于任何数字值,但小于任何其他字符串值。
如果返回值是一个数字,则将以规范格式返回它(删除前导和末尾的零,等等)。 如果返回值是一个字符串,则将不改变返回值,包括任何前导或末尾空格。
GREATEST返回逗号分隔的一系列表达式中的最大值。
返回逗号分隔的一系列表达式中的最小值。
COALESCE返回逗号分隔的一系列表达式中的第一个非值。
日期/时间函数,返回当前UTC日期和时间。
GETUTCDATE([precision])
precision - 可选-一个正整数,指定时间精度为小数秒的位数。
默认值是0(没有小数秒);
这个默认值是可配置的。GETUTCDATE返回通用时间常数()日期和时间作为时间戳。由于时间在地球上的任何地方都是相同的,不依赖于当地时区,也不受当地时差(如夏令时)的影响,因此当不同时区的用户访问同一数据库时,此函数对于应用一致的时间戳非常有用。
可以返回数据类型格式(yyyy-mm-dd hh:mm:ss.ffff)或数据类型格式(编码的64位有符号整数)的时间戳。以下规则确定返回哪种时间戳格式:
UTC时间戳被提供给数据类型为的字段,则此时间戳值将以数据类型格式返回。例如,。要更改默认日期时间字符串格式,请使用带有各种日期和时间选项的命令。
的典型用法是在SELECT语句SELECT列表或查询的子句中。在设计报表时,可以使用在每次生成报表时打印当前日期和时间。对于跟踪活动也很有用,比如记录事务发生的时间。
日期/时间函数,返回当前本地日期和时间。
GETDATE([precision])
precision - 可选-一个正整数,指定时间精度为小数秒的位数。
默认值是0(没有小数秒);
这个默认值是可配置的。
精度值是可选的,括号是必选的。GETDATE将此时区的当前本地日期和时间作为时间戳返回;它根据本地时间变量(如夏令时)进行调整。
GETDATE可以返回数据类型格式(yyyy-mm-dd hh:mm:ss.ffff)或数据类型格式(编码的位有符号整数)的时间戳。以下规则确定返回哪种时间戳格式:
如果当前时间戳被提供给数据类型为%PosiTime的字段,则当前时间戳值将以POSIXTIME数据类型格式返回。例如, WHERE PosixField=GETDATE() or INSERT INTO MyTable (PosixField) VALUES (GETDATE())
如果当前时间戳被提供给数据类型为的字段,则当前时间戳值将以TIMESTAMP数据类型格式返回。其ODBC类型为,长度为,精度为,例如
数值函数,返回小于或等于给定数值表达式的最大整数。
FLOOR(numeric-expression)
{fn FLOOR(numeric-expression)}
numeric-expression - 下限要计算的数字。FLOOR返回与NUMERIC-EXPRESSION相同的数据类型。
返回小于或等于的最接近的整数值。返回值的小数位数为0。当为空值、空字符串()或非数字字符串时,返回。
请注意,可以作为ODBC标量函数(使用花括号语法)调用,也可以作为SQL常规函数调用。
也可以使用方法调用从ObjectScript调用此函数:
$SYSTEM.SQL.Functions.FLOOR(numeric-expression)
以下示例显示如何将分数转换为其Floor整数:
SELECT FLOOR(167.111) AS FloorNum1,
FLOOR(167.456) AS FloorNum2,
FLOOR(167.999) AS FloorNum3
167 167 167
SELECT {fn FLOOR(167.00)} AS FloorNum1,
{fn FLOOR(167)} AS FloorNum2
167 167
在InterSystems IRIS和InterSystems Caché 里,是否您遇到过执行一个SQL Insert/Update语句,明明给的是正确的日期值,但被告知“值‘2022-01-01’ 校验失败”的类似情况,并感到困惑?
如果有,那么您需要了解一下InterSystems IRIS和InterSystems Caché保存和显示数据的模式。
InterSystems IRIS和InterSystems Caché里,数据有3种模式,称之为SELECT MODE:
逻辑模式:这是数据被保存到InterSystems IRIS和InterSystems Cache'时的格式。例如,%Date类型的数据,在数据库里被保存为一个整数,即从1840年12月31号到这个日期的天数,而不是YYYY-MM-DD的格式。
ODBC模式:这是ODBC对数据定义的格式。在这个模式下,%Date类型的数据就会显示为YYYY-MM-DD的格式。
显示模式:这是数据在InterSystems IRIS和InterSystems Caché里默认的显示格式。例如在美国语言环境下,%Date的默认显示格式是DD/MM/YYYY格式。
InterSystems IRIS和InterSystems Caché只会使用逻辑模式保存数据,但可以以任何模式显示数据。
字符串函数,返回字符串中子字符串的结束位置,可选的搜索起始点。
$FIND(string,substring[,start])
string - 要搜索的目标字符串。
它可以是变量名、数值、字符串字面值或任何有效表达式。substring - 要搜索的子字符串。
它可以是变量名、数值、字符串字面值或任何有效表达式。start - 可选-子字符串搜索的起始点,指定为正整数。
从字符串开始的字符计数,从1开始计数。
若要从字符串的开头开始搜索,请忽略此参数或指定从0或开始。
负数、空字符串或非数字值将被视为。
指定为会导致返回。返回数据类型。
返回一个整数,指定子字符串在字符串中的结束位置。
搜索字符串的子字符串。
如果找到子字符串,$FIND返回子字符串后面第一个字符的整数位置。
如果未找到,返回值。
可以包含选项来指定搜索的起始位置。 如果大于字符串中的字符数,返回一个值为。 如果省略,则默认为字符串位置。 如果起始值为、负数或非数字字符串,则位置是默认值。
是区分大小写的。 使用其中一个大小写转换函数来定位字母或字符串的大写和小写实例。
, POSITION, 和都在字符串中搜索指定的子字符串,并返回与第一个匹配项对应的整数位置。
按位置从字符串中提取字符的字符串函数。
$EXTRACT(string[,from[,to]])
string - 要从中提取子字符串的目标字符串。from - 可选-单个字符在目标字符串中的位置,或要提取的字符范围(包括)的开头。
指定为从1开始计数的正整数。to - 可选-要提取的字符范围的结束位置(包括)。
指定为从开始计数的正整数。返回字符串中指定位置的子字符串。 返回的子字符串的性质取决于所使用的参数。
$EXTRACT(string)提取字符串中的第一个字符。from指定的位置提取字符。
例如,如果变量包含字符串,下面的命令提取(第二个字符):to位置结束的字符范围。
例如,下面的命令从字符串中提取字符串(即从位置到位置的所有字符,包括在内):这个函数返回VARCHAR类型的数据。
字符串值可以是变量名、数字值、字符串字面值或任何有效表达式。
from值必须是正整数(但是,请参见注释)。
如果是小数,则截断该小数部分,只使用整数部分。
如果值大于字符串中的字符数,返回一个空字符串。
如果指定了而没有指定参数,则提取指定的单个字符。
如果与参数一起使用,它标识要提取的范围的开始,并且必须小于的值。 如果, 返回指定位置的单个字符。 如果大, 返回一个空字符串。
%EXTERNAL以显示格式返回表达式的格式转换函数。
%EXTERNAL(expression)
%EXTERNAL expression
expression - 要转换的表达式。字段名、包含字段名的表达式或返回值为可转换数据类型(如DATE或%LIST)的函数。不能是流字段。将表达式转换为显示格式,与当前选择模式(显示模式)无关。显示格式表示VARCHAR数据类型的数据,无论字段或数据类型方法执行什么数据转换。
通常用于选择列表。它可以在WHERE子句中使用,但不建议这样使用,因为使用会阻止在指定字段上使用索引。
应用会将列标题名称更改为诸如“”之类的值;因此,通常需要指定列名别名,如以下示例所示。
是否转换日期取决于日期字段或函数返回的数据类型。转换CURDATE、、和值。它不转换、、、和值。
当将结构转换为显示格式时,显示的列表元素似乎由空格分隔。这个“空格”实际上是两个非显示字符和。
是一个扩展。
无论当前选择模式是什么,要将表达式转换为LOGICAL格式,请使用函数。
无论当前选择模式是什么,要将表达式转换为格式,请使用函数。
下面的动态示例以当前选择模式格式返回Date of Birth (DOB)数据值,并使用函数返回相同的数据。 为了演示的目的,在这个程序中,值在每次调用时都是随机确定的:
ClassMethod External()
{
s tStatement = ##class(%SQL.Statement).%New()
s tStatement.%SelectMode = $RANDOM(3)
if tStatement.%SelectMode = 0 {w "Select mode LOGICAL",! }
elseif tStatement.%SelectMode=1 {w "Select mode ODBC",! }
elseif tStatement.%SelectMode=2 {w "Select mode DISPLAY",! }
s myquery = 2
s myquery(1) = "SELECT TOP 5 DOB,%EXTERNAL(DOB) AS ExtDOB "
s myquery(2) = "FROM Sample.Person"
s qStatus = tStatement.%Prepare(.myquery)
s rset = tStatement.%Execute()
d rset.%Display()
w !,"End of data"
}
返回数字的指数(自然对数的倒数)的标量数值函数。
{fn EXP(expression)}
expression - 对数指数,数值表达式。EXP返回NUMERIC或数据类型。如果表达式的数据类型为,则返回;否则返回。
是指数函数,其中e是常数。因此,要返回的值,可以指定。是自然对数函数的逆函数。
返回一个精度为、小数位数为18的值。如果传递的值为,则返回。
只能用作标量函数(使用花括号语法)。
下面的示例返回常量e:
SELECT {fn EXP(1)} AS e_constant
2.718281828459045235
下面的嵌入式SQL示例返回整数到的指数值:
ClassMethod Exp()
{
s a = 0
while a < 11 {
&sql(SELECT {fn EXP(:a)} INTO :b)
if SQLCODE'=0 {
w !,"错误代码 ",SQLCODE
q
} else {
w !,"指数 ",a," = ",b
s a=a+1 }
}
}
下面的嵌入式SQL示例演示了与相反:
注意,在第三个函数中,调用数字输入和计算的返回值之间的小差异。下一个示例显示如何处理这种计算差异。
下面的嵌入式SQL示例显示了整数1到10的和函数之间的关系:
请注意,这里需要
排序规则函数,可将字符转换为精确的排序规则格式。
%EXACT(expression)
%EXACT expression
expression - 字符串表达式,可以是列名、字符串文字、数字或另一个函数的结果,其中底层数据类型可以表示为任何字符类型(如CHAR或VARCHAR2)。%Exact返回精确排序规则序列中的表达式。此归类序列按如下方式对值进行排序:
ASCII排序顺序相同:数字在大写字母字符之前排序,大写字母字符在小写字母字符之前排序。标点符号出现在序列中的多个位置。这将导致如下所示的序列:
NULL
-2 /* 规范数排序 */
0
1
2
10
22
88
'' /* 空字符串 */
# /* 逐个字符的字符串排序 */
-00 /* 非规范数字排序为字符串 */
0 Elm St. /* 逐个字符的字符串排序 */
022 /* 非规范数字排序为字符串 */
1 Elm St.
19 Elm St.
19 elm St. /* 字符串排序规则区分大小写 */
19Elm St.
2 Elm St.
201 Elm St.
21 Elm St.
Elm St.
class '%Library.RoutineMgr', property 'Code': 错误 #5002: Cache错误:
zWrite+23^%Library.FileCharacterStream.1 报错JS 时报这个错误 应该怎么办?
类似: "set obj = ##class(myClass).%OpenId(id)" 把一个id 赋予对象的实例,有没有办法可以通过提供类名和id 作为参数来实现功能/类方法来返回同样的结果,例如 用ObjectScript 中的getObjectInstanceByNameId(className As %String, id As %Integer)?谢谢!
将弧度转换为角度的数值函数。
DEGREES(numeric-expression)
{fn DEGREES(numeric-expression)}
numeric-expression - 以弧度表示的角度的量度。解析为数值的表达式。度返回NUMERIC或DOUBLE数据类型。如果NUMERIC-EXPRESSION的数据类型为,则度返回;否则返回。
度数可以指定为标准标量函数,也可以指定为使用大括号语法的ODBC标量函数。
以弧度为单位进行角度测量,并以度为单位返回相应的角度测量值。如果传递空值,度将返回空。
返回值的默认精度为,默认小数位数为。
可以使用弧度函数将度数转换为弧度。
下面的嵌入式SQL示例返回与弧度值0到6对应的等价度:
ClassMethod Degrees()
{
s a = 0
while a < 7 {
&sql(SELECT DEGREES(:a) INTO :b)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
q
} else {
w !,"radians ",a," = degrees ",b
s a=a+1 }
}
}
计算给定表达式并返回指定值的函数。
DECODE(expr {,search,result}[,default])
expr - 要解码的表达式。search - 要与Expr进行比较的值。result - Expr匹配搜索时返回的值。default - 可选-如果与任何搜索都不匹配,则返回默认值。可以指定多个搜索和结果对,以逗号分隔。您可以指定一个默认值。表达式(包括、SEARCH、和)中的最大参数数约为。搜索、结果和默认值可以从表达式派生。
为了计算表达式,会逐个将与每个搜索值进行比较:
expr等于 ,则返回相应的结果。expr不等于 ,则返回默认值,如果省略默认值,则返回。仅在将与进行比较之前计算每个search,而不是在将所有与进行比较之前评估所有。因此,如果上一次搜索等于,不会对搜索求值。
在表达式中,将两个视为等效。如果为,则将返回同样为的第一次搜索结果。
请注意,为了与Oracle兼容,支持解码。
返回第一个结果参数的数据类型。如果无法确定第一个结果参数的数据类型,则返回。对于数值,从所有可能的结果参数值返回最大长度、精度和小数位数。
如果结果和默认值的数据类型不同,则返回的数据类型是与所有可能的返回值最兼容的类型,即具有最高数据类型优先级的数据类型。
Date函数,它返回日期表达式的整型日期。
date-expression - 日期表达式,它是列名、另一个标量函数的结果或日期或时间戳文字。DAYOFYEAR返回一个介于1到366之间的整数,该整数对应于给定日期表达式的一年中的第几天。DAYOFYAR计算闰年日期。
根据日期整数、$HOROLOG或值、ODBC格式日期字符串或时间戳计算一年中的日期。
日期表达式时间戳可以是数据类型%Library.PosiTime(编码的64位有符号整数)或数据类型。
时间戳的时间部分不计算,可以省略。
在计算值的月份日期时,会计算闰年差异,包括世纪日调整:2000年是闰年,1900和2100不是闰年。
可以将1840年12月31日之前的日期表达式值处理为负整数。下面的示例显示了这一点:
SELECT {fn DAYOFYEAR(-306)} AS LastDayFeb,
{fn DAYOFYEAR(-305)} AS FirstDayMar
60 61
最早有效日期表达式为。
可以使用或DATENAME函数返回当天计数。和对日期表达式执行值和范围检查。
也可以使用方法调用从ObjectScript调用此函数:
$SYSTEM.SQL.Functions.DAYOFYEAR(date-expression)
Date函数,它返回日期表达式的整型星期几。
{fn DAYOFWEEK(date-expression)}
date-expression - 有效的ODBC格式日期或$HOROLOG格式日期,带或不带时间组件。作为列名、另一个标量函数的结果或日期或时间戳文字的表达式。DAYOFWEEK接受日期表达式,并返回与该日期的星期几对应的整数。一周的天数从一周的第一天开始计算;的默认设置是星期天是一周的第一天。因此,默认情况下,返回值表示这些天:
请注意,ObjectScript 和$ZDATETIME函数计算一周中的天数从到(而不是到)。
日期表达式可以是日期整数、或值、ODBC格式的日期字符串或时间戳。
日期表达式时间戳可以是数据类型%Library.PosiTime(编码的64位有符号整数)或数据类型。
时间戳的时间部分不被评估,可以省略。
可以使用或函数返回星期几的信息。要返回星期几的名称,请使用、或。
也可以使用方法调用从ObjectScript调用此函数:
$SYSTEM.SQL.Functions.DAYOFWEEK(date-expression)
返回日期表达式的月份日期的日期函数。
{fn DAYOFMONTH(date-expression)}
date-expression - 要从中返回月值日期的日期或时间戳表达式。作为列名、另一个标量函数的结果或日期或时间戳文字的表达式。DAYOFMONTH以1到之间的整数形式返回每月的第几天。日期表达式可以是日期整数、或值、ODBC格式的日期字符串或时间戳。
日期表达式时间戳可以是数据类型(编码的64位有符号整数)或数据类型。
TIMESTAMP或字符串的时间部分不计算,可以省略。
DAYOFMONTH和函数在功能上是相同的。
也可以使用方法调用从ObjectScript调用此函数:
时间戳字符串的日(Dd)部分应该是介于到31之间的整数。但是,不会对用户提供的值进行范围检查。按照指定的方式返回大于的数字和分数。由于()用作分隔符,因此不支持负数。输入上的前导零是可选的;输出上不显示前导零。
当日期部分为、或非数字值时,返回。如果完全省略日期字符串的日期部分(),或者如果没有提供日期表达式,也会返回。
可以使用以下SQL标量函数返回日期时间字符串的元素:年、月、(或日)、小时、分钟、秒。使用或函数可以返回相同的元素。和对日期值执行值和范围检查。
说明
欢迎来到InterSystems广播站--数据点!在这一集里,我们和在线培训团队负责人Jenny Ames聊了聊InterSystems IRIS--稳定、灵活、可扩展、可互操作的数据平台,它为世界上许多最关键的核心应用提供支持。从它的多模型性质到它的集成引擎,再到它的医疗保健功能,在一次谈话中,有很多东西需要解读。
本期节目回放:https://datapoints.castos.com/episodes/1-what-is-intersystems-iris-jenn…
关于InterSystems广播站的更多信息,请访问https://datapoints.intersystems.com。
今天就试用InterSystems IRIS,请到https://www.intersystems.com/try,启动你的实例!
更多资料欢迎访问:https://gettingstarted.intersystems.com。
以下是本期对话中文全文。
德里克-罗宾逊 00:01 欢迎来到InterSystems 在线培训的播客。请确保在你最喜欢的播客应用程序上订阅播客,如Spotify、苹果播客、谷歌播放或Stitcher。你可以通过搜索 "数据点 "并点击订阅按钮来做到这一点。
Date函数,它返回日期表达式的星期几的名称。
{fn DAYNAME(date-expression)}
date-expression - 计算结果为日期整数、ODBC日期或时间戳的表达式。该表达式可以是列名、另一个标量函数的结果或日期或时间戳文字。DAYNAME返回与指定日期对应的日期的名称。返回值为字符串,最大长度为。默认返回的日期名称为:。
要更改这些默认日期名称值,请使用带有选项的命令。
日期名称是针对日期整数、$HOROLOG或值、ODBC格式日期字符串或时间戳计算的。
日期表达式时间戳可以是数据类型(编码的64位有符号整数)或数据类型。
时间戳的时间部分不计算,可以省略。
DAYNAME检查提供的日期是否为有效日期。年份必须介于和9999之间(包括和)、月01到12和适合该月的日期(例如,仅在闰年有效)。如果日期无效,将发出错误(发生致命错误)。
可以使用函数返回星期几的信息。可以使用检索带有其他日期元素的日期名称或日期名称缩写。要返回与星期几对应的整数,请使用或。
也可以使用方法调用从ObjectScript调用此函数:
$SYSTEM.SQL.Functions.DAYNAME(date-expression)
以下示例都返回字符串星期三,因为日期的日期(2018年2月21日)是星期三。第一个示例采用时间戳字符串:
SELECT {fn DAYNAME('2018-02-21 12:35:46')} AS Weekday
Wednesday
返回日期表达式的月份日期的日期函数。
DAY(date-expression)
{fn DAY(date-expression)}
date-expression - 作为列名、另一个标量函数的结果或日期或时间戳文字的表达式。注意:DAY函数是DAYOFMONTH函数的别名。提供DAY是为了与TSQL兼容。
SELECT day("2022-02-28") AS day
28
SELECT day(+$h) AS day
5