0 关注者 · 478 帖子

SQL 是在关系数据库中存储、操作和检索数据的标准语言。

文章 姚 鑫 · 二月 28, 2022 5m read

第六十八章 SQL函数 JSON_ARRAY

JSON数组形式返回数据的转换函数。

大纲

JSON_ARRAY(expression [,expression][,...] [NULL ON NULL | ABSENT ON NULL])

参数

  • expression - 表达式或逗号分隔的表达式列表。这些表达式可以包括列名、聚合函数、算术表达式、文字和文字NULL
  • ABSENT ON NULLNULL ON NULL - 可选-指定如何在返回的JSON数组中表示空值的关键字短语。NULL ON NULL(缺省值)表示带有单词NULL(未引号)的NULL(缺少)数据。在NULL上不存在将从JSON数组中省略空数据;它不会保留占位符逗号。此关键字短语对空字符串值没有影响。

描述

Json_array接受表达式或(更常见的)逗号分隔的表达式列表,并返回包含这些值的JSON数组。Json_array可以在SELECT语句中与其他类型的SELECT-Items结合使用。可以在可以使用SQL函数的其他位置指定json_array,例如在WHERE子句中。

返回的JSON数组格式如下:

[ element1 , element2 , element3 ]
0
0 484
文章 姚 鑫 · 二月 27, 2022 2m read

第六十七章 SQL函数 ISNUMERIC

测试有效数字的数值函数。

大纲

ISNUMERIC(check-expression)

参数

  • check-expression - 要计算的表达式。

ISNUMERIC返回SMALLINT数据类型。

描述

ISNUMERIC计算check-expression并返回下列值之一:

  • 如果check表达式是有效数字,则返回1。有效数字可以是数字表达式,也可以是表示有效数字的字符串。
    • 数值表达式首先转换为规范形式,解析多个前导符号;因此,诸如+-+34这样的数值表达式是有效的数字。
    • 在求值之前不会转换数字字符串。数字字符串最多只能有一个前导符号才能计算为有效数字。带有尾随小数点的数字字符串的计算结果为有效数字。
  • 如果check-expression不是有效数字,则返回0。任何包含非数字字符的字符串都不是有效数字。具有多个前导符号的数字字符串(如‘+-+34’)不会被计算为有效数字。编码列表始终返回0,即使其元素是有效数字也是如此。空字符串ISNUMERIC(‘’)返回0。
  • 如果check-expressionNULL,则返回NULLISNUMERIC(NULL)返回NULL
0
0 94
文章 姚 鑫 · 二月 26, 2022 3m read

第六十六章 SQL函数 ISNULL

测试NULL并返回相应表达式的函数。

大纲

ISNULL(check-expression,replace-expression)

参数

  • check-expression - 要计算的表达式。
  • replace-expression - Check-ExpressionNULL时返回的表达式。

ISNULL返回与Check-Expression相同的数据类型。

描述

ISNULL计算check-expression并返回以下两个值之一:

  • 如果check-expressionNULL,则返回Replace-Expression
  • 如果Check-Expression不为空,则返回Check-Expression

Replace-Expression的数据类型应该与Check-Expression的数据类型兼容。

请注意,ISNULL函数与NVL函数相同,后者是为了与Oracle兼容而提供的。

日期和时间显示转换

0
0 64
文章 姚 鑫 · 二月 25, 2022 3m read

第六十五章 SQL函数 %INTERNAL

返回逻辑格式表达式的格式转换函数。

大纲

%INTERNAL(expression)

%INTERNAL expression

参数

  • expression - 要转换的表达式。 字段名、包含字段名的表达式,或返回可转换数据类型(如DATE%List)中的值的函数。

描述

%INTERNAL将表达式转换为逻辑格式,与当前选择模式(显示模式)无关。逻辑格式是数据的内存格式(对其执行操作的格式)。%INTERNAL通常用于选择列表SELECT-ITEM

可以在WHERE子句中使用%INTERNAL,但强烈建议不要使用%INTERNAL,因为使用%INTERNAL会阻止在指定字段上使用索引,并且%INTERNAL会强制所有比较区分大小写,即使该字段有默认排序规则也是如此。

应用%INTERNAL会将列标题名称更改为诸如“Expression_1”之类的值;因此,通常需要指定列名别名,如下面的示例所示。

%INTERNAL将数据类型%DATE的值转换为整数数据类型值。%INTERNAL将数据类型%TIME的值转换为数字(15,9)数据类型值。之所以提供此转换,是因为ODBC或JDBC客户端不识别逻辑%DATE%TIME值。

0
0 70
文章 姚 鑫 · 二月 24, 2022 3m read

第六十四章 SQL函数 INSTR

返回子字符串在字符串中的位置的字符串函数,具有可选的搜索起始点和出现次数。

大纲

INSTR(string,substring[,start[,occurrence]])

参数

  • string - 要在其中搜索子字符串的字符串表达式。 它可以是列的名称、字符串字面值或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(如CHARVARCHAR2)。
  • substring - 一个子字符串,被认为出现在字符串中。
  • start - 可选-子字符串搜索的起始点,指定为正整数。 从字符串开始的字符计数,从1开始计数。 若要从字符串的开头开始搜索,请忽略此参数或指定从1开始。 起始值为0、空字符串、NULL或非数字值会导致INSTR返回0。 指定start为负数会导致INSTR返回<null>
  • occurrence - 可选-一个非零整数,指定从起始位置搜索时返回哪个子字符串。 默认情况是返回第一个出现的位置。

INSTR返回INTEGER数据类型。

描述

INSTR在字符串中查找子字符串,并返回子字符串的第一个字符的位置。 位置以整数形式返回,从字符串的开头开始计算。 如果substring没有找到,则返回0(0)。 如果传递给任何一个参数一个NULL值,INSTR将返回NULL

0
0 145
文章 姚 鑫 · 二月 23, 2022 8m read

第六十三章 SQL函数 IFNULL

测试NULL并返回适当表达式的函数。

大纲

IFNULL(expression-1,expression-2 [,expression-3])

{fn IFNULL(expression-1,expression-2)}

参数

  • expression-1 - 要计算以确定是否为NULL的表达式。
  • expression-2 - 如果expression-1NULL,则返回的表达式。
  • expression-3 - 可选-如果expression-1不是NULL返回的表达式。 如果没有指定expression-3,则当expression-1不是NULL时返回NULL值。

返回的数据类型描述如下。

描述

支持IFNULL作为SQL通用函数和ODBC标量函数。 请注意,虽然这两个执行非常相似的操作,但它们在功能上是不同的。 SQL通用函数支持三个参数。 ODBC标量函数支持两个参数。 SQL通用函数和ODBC标量函数的双参数形式是不一样的; 当expression-1不为空时,它们返回不同的值。

SQL通用函数计算表达式1是否为NULL。 它永远不会返回expression-1:

0
0 115
文章 Michael Lei · 二月 23, 2022 2m read

开发者们大家好!

你可能已经注意到了在IRIS 2021 Global的名字是随机的。

如果你用DDL来创建类而且想给Global一个确定的名字,实际上是可以做的。

在CREATE Table  里使用 WITH %CLASSPARAMETER DEFAULTGLOBAL='^GLobalName' ,如文档。参考以下例子:

0
0 134
文章 姚 鑫 · 二月 22, 2022 3m read

第六十二章 SQL函数 HOUR

Time函数,它返回DateTime表达式的小时数。

大纲

{fn HOUR(time-expression)}
  • time-expression - 作为列名、另一个标量函数的结果或字符串或数字文字的表达式。它必须解析为日期时间字符串或时间整数,其中基础数据类型可以表示为%Time%Timestamp%PosiTime

描述

Hour返回一个整数,指定给定时间或日期时间值的小时。小时是根据$HOROLOG$ZTIMESTAMP值、ODBC格式的日期字符串或时间戳计算的。

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

要更改此默认时间格式,请使用SET OPTION命令。

请注意,可以提供时间整数(已用秒数),但不能提供时间字符串(hh:mm:ss)。必须提供日期时间字符串(yyyy-mm-dd hh:mm:ss)。可以省略日期时间字符串的秒(:ss)或分钟和秒(mm:ss)部分,但仍返回小时部分。日期时间字符串的时间部分必须是有效的时间值。未验证日期时间字符串的日期部分。

小时以24小时表示。小时数(HH)部分应该是介于0到23之间的整数。输入上的前导零是可选的;输出上不显示前导零。

0
0 125
文章 姚 鑫 · 二月 21, 2022 3m read

第六十一章 SQL函数 GREATEST

从一系列表达式中返回最大值的函数。

大纲

GREATEST(expression,expression[,...])

参数

  • expression - 解析为数字或字符串的表达式。 对这些表达式的值进行比较。 表达式可以是字段名、文字、算术表达式、主机变量或对象引用。 最多可以列出140个逗号分隔的表达式。

描述

GREATEST返回逗号分隔的一系列表达式中的最大值。 表达式按从左到右的顺序求值。 如果只提供一个表达式,则GREATEST返回该值。 如果任何表达式为NULL,则GREATEST返回NULL

如果所有表达式值都解析为规范数,则按数值顺序对它们进行比较。 如果引用的字符串包含规范格式的数字,则按数字顺序对其进行比较。 但是,如果引用的字符串包含非规范格式的数字(例如,'00''0.4''+4'),则将其作为字符串进行比较。 字符串比较按排序顺序逐字符执行。 任何字符串值都大于任何数字值。

空字符串大于任何数字值,但小于任何其他字符串值。

如果返回值是一个数字,则GREATEST将以规范格式返回它(删除前导和末尾的零,等等)。 如果返回值是一个字符串,则GREATEST将不改变返回值,包括任何前导或末尾空格。

0
0 91
文章 姚 鑫 · 二月 20, 2022 4m read

第六十章 SQL函数 GETUTCDATE

日期/时间函数,返回当前UTC日期和时间。

大纲

GETUTCDATE([precision])

参数

  • precision - 可选-一个正整数,指定时间精度为小数秒的位数。 默认值是0(没有小数秒); 这个默认值是可配置的。

描述

GETUTCDATE返回通用时间常数(UTC)日期和时间作为时间戳。由于UTC时间在地球上的任何地方都是相同的,不依赖于当地时区,也不受当地时差(如夏令时)的影响,因此当不同时区的用户访问同一数据库时,此函数对于应用一致的时间戳非常有用。

GETUTCDATE可以返回%TIMESTAMP数据类型格式(yyyy-mm-dd hh:mm:ss.ffff)或%PosiTime数据类型格式(编码的64位有符号整数)的时间戳。以下规则确定返回哪种时间戳格式:

0
0 107
文章 姚 鑫 · 二月 19, 2022 4m read

第五十九章 SQL函数 GETDATE

日期/时间函数,返回当前本地日期和时间。

大纲

GETDATE([precision])

参数

  • precision - 可选-一个正整数,指定时间精度为小数秒的位数。 默认值是0(没有小数秒); 这个默认值是可配置的。 精度值是可选的,括号是必选的。

描述

GETDATE将此时区的当前本地日期和时间作为时间戳返回;它根据本地时间变量(如夏令时)进行调整。

GETDATE可以返回%TIMESTAMP数据类型格式(yyyy-mm-dd hh:mm:ss.ffff)或%PosiTime数据类型格式(编码的64位有符号整数)的时间戳。以下规则确定返回哪种时间戳格式:

0
0 145
文章 姚 鑫 · 二月 18, 2022 2m read

第五十八章 SQL函数 FLOOR

数值函数,返回小于或等于给定数值表达式的最大整数。

大纲

FLOOR(numeric-expression)

{fn FLOOR(numeric-expression)}

参数

  • numeric-expression - 下限要计算的数字。

FLOOR返回与NUMERIC-EXPRESSION相同的数据类型。

描述

FLOOR返回小于或等于NUMERIC-EXPRESSION的最接近的整数值。返回值的小数位数为0。当numeric-expression为空值、空字符串(‘’)或非数字字符串时,FLOOR返回NULL

请注意,Floor可以作为ODBC标量函数(使用花括号语法)调用,也可以作为SQL常规函数调用。

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

$SYSTEM.SQL.Functions.FLOOR(numeric-expression)

示例

以下示例显示Floor如何将分数转换为其Floor整数:

SELECT FLOOR(167.111) AS FloorNum1,
       FLOOR(167.456) AS FloorNum2,
       FLOOR(167.999) AS FloorNum3

167	167	167
0
0 81
文章 Qiao Peng · 二月 18, 2022 6m read

在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é只会使用逻辑模式保存数据,但可以以任何模式显示数据。

二 数据类型与数据模式

0
0 271
文章 姚 鑫 · 二月 17, 2022 4m read

第五十七章 SQL函数 $FIND

字符串函数,返回字符串中子字符串的结束位置,可选的搜索起始点。

大纲

$FIND(string,substring[,start])

参数

  • string - 要搜索的目标字符串。 它可以是变量名、数值、字符串字面值或任何有效表达式。
  • substring - 要搜索的子字符串。 它可以是变量名、数值、字符串字面值或任何有效表达式。
  • start - 可选-子字符串搜索的起始点,指定为正整数。 从字符串开始的字符计数,从1开始计数。 若要从字符串的开头开始搜索,请忽略此参数或指定从01开始。 负数、空字符串或非数字值将被视为0。 指定startNULL会导致$FIND返回< NULL >

$FIND返回SMALLINT数据类型。

描述

$FIND返回一个整数,指定子字符串在字符串中的结束位置。 $FIND搜索字符串的子字符串。 如果找到子字符串,$FIND返回子字符串后面第一个字符的整数位置。 如果substring未找到,$FIND返回0值。

可以包含start选项来指定搜索的起始位置。 如果start大于字符串中的字符数,$FIND返回一个值为0。 如果省略start,则默认为字符串位置1。 如果起始值为0、负数或非数字字符串,则位置1是默认值。

$FIND是区分大小写的。 使用其中一个大小写转换函数来定位字母或字符串的大写和小写实例。

0
0 91
文章 姚 鑫 · 二月 16, 2022 5m read

第五十六章 SQL函数 $EXTRACT

按位置从字符串中提取字符的字符串函数。

大纲

$EXTRACT(string[,from[,to]])

参数

  • string - 要从中提取子字符串的目标字符串。
  • from - 可选-单个字符在目标字符串中的位置,或要提取的字符范围(包括)的开头。 指定为从1开始计数的正整数。
  • to - 可选-要提取的字符范围的结束位置(包括)。 指定为从1开始计数的正整数。

描述

$EXTRACT返回字符串中指定位置的子字符串。 返回的子字符串的性质取决于所使用的参数。

  • $EXTRACT(string)提取字符串中的第一个字符。
  • $EXTRACT(string,from)from指定的位置提取字符。 例如,如果变量var1包含字符串“ABCD”,下面的命令提取“B”(第二个字符):
SELECT $EXTRACT('ABCD',2) AS Extracted

2
  • $EXTRACT(string,from,to)提取以from位置开始,以to位置结束的字符范围。 例如,下面的命令从字符串“1234Alabama567”中提取字符串“Alabama”(即从位置5到位置11的所有字符,包括在内):
SELECT $EXTRACT('1234Alabama567',5,11) AS Extracted

Alabama

这个函数返回VARCHAR类型的数据。

参数

string

0
0 139
文章 姚 鑫 · 二月 15, 2022 3m read

第五十五章 SQL函数 %EXTERNAL

以显示格式返回表达式的格式转换函数。

大纲

%EXTERNAL(expression)

%EXTERNAL expression

参数

  • expression - 要转换的表达式。字段名、包含字段名的表达式或返回值为可转换数据类型(如DATE%LIST)的函数。不能是流字段。

描述

%EXTERNAL将表达式转换为显示格式,与当前选择模式(显示模式)无关。显示格式表示VARCHAR数据类型的数据,无论字段或数据类型LogicalToDisplay方法执行什么数据转换。

%EXTERNAL通常用于选择列表SELECT-ITEM。它可以在WHERE子句中使用,但不建议这样使用,因为使用%EXTERNAL会阻止在指定字段上使用索引。

应用%EXTERNAL会将列标题名称更改为诸如“Expression_1”之类的值;因此,通常需要指定列名别名,如以下示例所示。

%EXTERNAL是否转换日期取决于日期字段或函数返回的数据类型。%EXTERNAL转换CURDATECURRENT_DATECURTIMECURRENT_TIME值。它不转换CURRENT_TIMESTAMPGETDATEGETUTCDATENOW$HOROLOG值。

0
0 89
文章 姚 鑫 · 二月 14, 2022 3m read

第五十四章 SQL函数 EXP

返回数字的指数(自然对数的倒数)的标量数值函数。

大纲

{fn EXP(expression)}

参数

  • expression - 对数指数,数值表达式。

EXP返回NUMERICDOUBLE数据类型。如果表达式的数据类型为DOUBLE,则EXP返回DOUBLE;否则返回NUMERIC

描述

Exp是指数函数e n,其中e是常数2.718281828。因此,要返回e的值,可以指定{fn exp(1)}Exp是自然对数函数log的逆函数。

EXP返回一个精度为36、小数位数为18的值。如果传递的值为NULL,则EXP返回NULL

EXP只能用作ODBC标量函数(使用花括号语法)。

示例

下面的示例返回常量e:

SELECT {fn EXP(1)} AS e_constant

2.718281828459045235

下面的嵌入式SQL示例返回整数010的指数值:

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 }
	}
}
0
0 76
文章 姚 鑫 · 二月 13, 2022 3m read

第五十三章 SQL函数 %EXACT

排序规则函数,可将字符转换为精确的排序规则格式。

大纲

%EXACT(expression)

%EXACT expression

参数

  • expression - 字符串表达式,可以是列名、字符串文字、数字或另一个函数的结果,其中底层数据类型可以表示为任何字符类型(如CHARVARCHAR2)。

描述

%Exact返回精确排序规则序列中的表达式。此归类序列按如下方式对值进行排序:

  1. NULL排序在所有实际值之前。%Exact对空值没有影响。这与默认排序规则相同。
  2. 规范数值(无论输入为数字还是字符串)在字符串值之前按数字顺序排序。
  3. 字符串值按区分大小写的字符串顺序排序。字符串的精确排序顺序与ANSI标准的ASCII排序顺序相同:数字在大写字母字符之前排序,大写字母字符在小写字母字符之前排序。标点符号出现在序列中的多个位置。

这将导致如下所示的序列:

0
0 170
文章 姚 鑫 · 二月 12, 2022 1m read

第五十二章 SQL函数 DEGREES

将弧度转换为角度的数值函数。

大纲

DEGREES(numeric-expression)

{fn DEGREES(numeric-expression)}

参数

  • numeric-expression - 以弧度表示的角度的量度。解析为数值的表达式。

度返回NUMERICDOUBLE数据类型。如果NUMERIC-EXPRESSION的数据类型为DOUBLE,则度返回DOUBLE;否则返回NUMERIC

度数可以指定为标准标量函数,也可以指定为使用大括号语法的ODBC标量函数。

描述

DEGREES以弧度为单位进行角度测量,并以度为单位返回相应的角度测量值。如果传递空值,度将返回空。

返回值的默认精度为36,默认小数位数为18

可以使用弧度函数将度数转换为弧度。

示例

下面的嵌入式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 }
		}
}

0
0 134
文章 姚 鑫 · 二月 11, 2022 4m read

第五十一章 SQL函数 DECODE

计算给定表达式并返回指定值的函数。

大纲

DECODE(expr {,search,result}[,default])

参数

  • expr - 要解码的表达式。
  • search - 要与Expr进行比较的值。
  • result - Expr匹配搜索时返回的值。
  • default - 可选-如果expr与任何搜索都不匹配,则返回默认值。

描述

可以指定多个搜索和结果对,以逗号分隔。您可以指定一个默认值。DECODE表达式(包括EXPRSEARCHRESULTDEFAULT)中的最大参数数约为100。搜索、结果和默认值可以从表达式派生。

为了计算DECODE表达式,会逐个将expr与每个搜索值进行比较:

  • 如果expr等于search ,则返回相应的结果。
  • 如果expr不等于search ,则返回默认值,如果省略默认值,则返回NULL

仅在将searchExpr进行比较之前计算每个search,而不是在将所有searchExpr进行比较之前评估所有search。因此,如果上一次搜索等于EXPR,不会对搜索求值。

DECODE表达式中,将两个NULL视为等效。如果exprNULL,则将返回同样为NULL的第一次搜索结果。

请注意,为了与Oracle兼容,支持解码。

返回值的数据类型

0
0 87
文章 姚 鑫 · 二月 10, 2022 2m read

第五十章 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)

0
0 96
文章 姚 鑫 · 二月 9, 2022 6m read

第四十九章 SQL函数 DAYOFWEEK

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

大纲

{fn DAYOFWEEK(date-expression)}

参数

  • date-expression - 有效的ODBC格式日期或$HOROLOG格式日期,带或不带时间组件。作为列名、另一个标量函数的结果或日期或时间戳文字的表达式。

描述

DAYOFWEEK接受日期表达式,并返回与该日期的星期几对应的整数。一周的天数从一周的第一天开始计算;的默认设置是星期天是一周的第一天。因此,默认情况下,返回值表示这些天:

  • 1 — Sunday
  • 2 — Monday
  • 3 — Tuesday
  • 4 — Wednesday
  • 5 — Thursday
  • 6 — Friday
  • 7 — Saturday

请注意,ObjectScript $ZDATE$ZDATETIME函数计算一周中的天数从06(而不是17)。

日期表达式可以是日期整数、$HOROLOG$ZTIMESTAMP值、ODBC格式的日期字符串或时间戳。

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

时间戳的时间部分不被评估,可以省略。

0
0 353
文章 姚 鑫 · 二月 8, 2022 3m read

第四十八章 SQL函数 DAYOFMONTH

返回日期表达式的月份日期的日期函数。

大纲

{fn DAYOFMONTH(date-expression)}

参数

  • date-expression - 要从中返回月值日期的日期或时间戳表达式。作为列名、另一个标量函数的结果或日期或时间戳文字的表达式。

描述

DAYOFMONTH131之间的整数形式返回每月的第几天。日期表达式可以是日期整数、$HOROLOG$ZTIMESTAMP值、ODBC格式的日期字符串或时间戳。

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

TIMESTAMP$HOROLOG字符串的时间部分不计算,可以省略。

DAYOFMONTHDAY函数在功能上是相同的。

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

DHC-APP>  w $SYSTEM.SQL.DAYOFMONTH("2018-02-25")
25

Timestamp date-expression

0
0 101
文章 姚 鑫 · 二月 7, 2022 2m read

第四十七章 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检查提供的日期是否为有效日期。年份必须介于00019999之间(包括00019999)、月01到12和适合该月的日期(例如,02/29仅在闰年有效)。如果日期无效,DAYNAME将发出SQLCODE-400错误(发生致命错误)。

0
0 51
文章 姚 鑫 · 二月 6, 2022 1m read

第四十六章 SQL函数 DAY

返回日期表达式的月份日期的日期函数。

大纲

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
0
0 78
文章 姚 鑫 · 二月 5, 2022 7m read

第四十五章 SQL函数 DATEPART

日期/时间函数,返回表示日期/时间表达式指定部分的值的整数。

大纲

DATEPART(datepart,date-expression)

参数

  • datepart - 要返回的日期/时间信息的类型。日期或时间部分的名称(或缩写)。这个名称可以用大写或小写来指定,有或没有引号。datepart可以指定为文字或主机变量。
  • date-expression - 从中返回datepart值的日期、时间或时间戳表达式。日期表达式必须包含datepart类型的值。

描述

DATEPORT函数以整数数据类型返回关于指定日期/时间表达式的DATEPORT信息。唯一的例外是sqltimestamp (sts),它以数据类型%Library.Timestamp返回。要以字符串形式返回日期部分信息,请使用DATENAME

DATEPART只返回日期表达式中一个元素的值;要返回包含多个日期部分的字符串,请使用TO_DATE

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

$SYSTEM.SQL.Functions.DATEPART(datepart,date-expression)

提供DATEPART是为了与Sybase和Microsoft SQL Server兼容。

Datepart 参数

0
0 215
文章 姚 鑫 · 二月 4, 2022 6m read

第四十四章 SQL函数 DATENAME

日期/时间函数,它返回一个字符串,表示日期/时间表达式中指定部分的值。

参数

  • 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 参数

0
0 90
文章 姚 鑫 · 二月 3, 2022 7m read

[toc]

第四十三章 SQL函数 DATEDIFF

日期/时间函数,返回两个日期之间指定日期部分的整数差。

大纲

DATEDIFF(datepart,startdate,enddate)

参数

  • datepart - 日期或时间部分的名称(或缩写)。这个名称可以用大写或小写来指定,有或没有引号。datepart可以指定为文字或主机变量。
  • startdate - 间隔的开始日期/时间。可以是各种标准格式的日期、时间或日期时间。
  • enddate - 间隔的结束日期/时间。可以是各种标准格式的日期、时间或日期时间。从enddate中减去startdate,以确定两个日期之间的日期部分间隔。

描述

DATEDIFF函数返回两个指定日期之间指定日期部分差的整数。日期范围从开始日期开始,到结束日期结束。(如果enddate早于startdateDATEDIFF将返回一个负整数值。)

0
0 745
文章 姚 鑫 · 二月 2, 2022 6m read

第四十二章 SQL函数 DATEADD

一个日期/时间函数,它返回一个时间戳,计算方法是在一个日期或时间戳中添加或减去若干日期部件单位(如小时或天)。

大纲

DATEADD(datepart,integer-exp,date-exp)

参数

  • datepart - 日期或时间部分的名称(或缩写)。 可以用大写或小写指定该名称,也可以不加引号。 可以将datepart指定为文字或主机变量。
  • integer-exp - 任意数字类型的数字表达式。 该值被截断为整数(正或负)。 该值指示将添加到(或从)date-exp中减去的datepart单元的数量。
  • date-exp - 要修改的日期/时间表达式。它可以是日期字符串,也可以是时间戳字符串(%PosiTime%Timestamp数据类型),也可以是CURRENT_DATE之类的函数。返回的值始终是时间戳,数据类型格式为%PosiTime%Timestamp

描述

DATEADD函数通过将指定的日期部分递增指定的单元数来修改日期/时间表达式。 例如,如果datepart“month”且整数-exp5,则DATEADDdate-exp递增5个月。 还可以通过为integer-exp指定一个负整数来减少日期部分。

0
0 139