1 关注者 · 991 帖子

  

InterSystems Caché 是一个多模型 DBMS 和应用服务器。

查看此处提供的更多详细信息

文档

文章 姚 鑫 · 六月 2, 2022 4m read

第160章 SQL函数 XMLFOREST

格式化多个 XML 标记以包含表达式值的函数。

大纲

XMLFOREST(expression [AS tag][,expression [AS tag]])

参数

  • expression - 任何有效的表达式。通常是包含要标记的数据值的列的名称。当指定为逗号分隔列表时,列表中的每个表达式都将包含在其自己的 XML 标记标记中。
  • AS tag - 可选 — XML 标记标记的名称。如果指定了标签,则 AS 关键字是必需的。保留标签中字母的大小写。 用双引号括起来的标签是可选的。如果省略双引号,标签必须遵循 命名标准。用双引号括起来的标签消除了这些命名限制。

XMLFOREST 对有效的标签名称实施 命名标准。它不能包含任何字符,也不能包含空格字符,并且不能以 "-", , 或数字。

如果指定不带 AS 标记子句的表达式,则标记值是表达式列的名称(大写字母):。

描述

函数返回用其自己的 XML 标记开始标记和结束标记标记的每个表达式的值,如 tag 中指定的那样。例如, 返回如下值:IL。 不能用于生成空元素标记。

可用于引用表或视图的 查询或子查询。 可以与普通列值一起出现在 列表中。

返回指定的表达式值,由开始标记和结束标记括起来,格式如下:

0
0 194
文章 姚 鑫 · 六月 1, 2022 6m read

第159章 SQL函数 XMLELEMENT

一种格式化 XML 标记标记以包含一个或多个表达式值的函数。

大纲

XMLELEMENT([NAME] tag,expression[,expression])

XMLELEMENT([NAME] tag,XMLATTRIBUTES(expression [AS alias]),expression[,expression])

参数

  • NAME tag - XML标记的名称。NAME关键字是可选的。该参数有三种语法形式: , 和。前两者在功能上是相同的。如果指定,标记必须用双引号括起来。标签中的字母大小写保持不变。

XMLELEMENT不执行标记值的验证。然而,标准要求有效的标记名不能包含任何字符 ,并且不能以, 或数字开头。

如果指定没有标记值的 关键字, 将提供默认标记值:。 NAME 关键字不区分大小写;结果标签初始大写。

  • - 任何有效的表达式。通常是包含要标记的数据值的列的名称。可以指定以逗号分隔的列列表或其他表达式,所有这些都将包含在同一标记中。第一个以逗号分隔的元素可以是 XMLATTRIBUTES 函数。只能指定一个 元素。

描述

函数返回用标记中指定的 XML(或 HTML)标记开始标记和结束标记标记的表达式的值。例如, 返回如下值:。 不能用于生成空元素标记。

可用于引用表或视图的

0
0 247
文章 姚 鑫 · 五月 31, 2022 1m read

第158章 SQL函数 XMLCONCAT

注:IRIS函数。

连接 XML 元素的函数。

大纲

XMLCONCAT(XmlElement1,XmlElement2[,...])

参数

  • XmlElement - XMLELEMENT 函数。指定两个或多个要连接的 XmlElement

描述

XMLCONCAT 函数将来自多个 函数的值作为单个字符串返回。 可用于引用表或视图的 T 查询或子查询。 可以与普通字段值一起出现在 列表中。

示例

以下查询连接来自两个 函数的值:

SELECT Name,XMLCONCAT(XMLELEMENT("Para",Name),
                      XMLELEMENT("Para",Home_City)) AS ExportString
     FROM Sample.Person

以下查询将 嵌套在 函数中:

SELECT XMLELEMENT("Item",Name,
          XMLCONCAT(
              XMLELEMENT("Para",Home_City,' ',Home_State),
              XMLELEMENT("Para",'is residence')))
       AS ExportString
FROM Sample.Person
0
0 164
文章 姚 鑫 · 五月 30, 2022 4m read

第157章 SQL函数 WEEK

一个日期函数,它将一年中的第几周作为日期表达式的整数返回。

大纲

{fn WEEK(date-expression)}

参数

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

描述

WEEK 接受一个日期表达式,并返回该日期从年初开始的周数。

默认情况下,使用 $HOROLOG 日期(从 1840 年 12 月 31 日开始的正整数或负整数天数)计算周数。因此,周数是逐年计算的,因此第 1 周是完成从上一年最后一周开始的 7 天期间的天数。一周总是从星期日开始;因此,日历年的第一个星期日标志着从第 1 周到第 2 周的变化。如果一年中的第一个星期日是 1 月 1 日,则该星期日是第 1 周;如果一年中的第一个星期日晚于 1 月 1 日,则该星期日是第 2 周的第一天。因此,第 1 周的长度通常少于 7 天。可以使用 函数确定星期几。一年中的总周数通常为 53,闰年可能为 。

IRIS 还支持确定一年中星期的 ISO 8601 标准。该标准主要用于欧洲国家。当配置为 ISO 8601 时, 从星期一开始计算星期,并将星期分配给包含该星期星期四的年份。

0
0 179
文章 姚 鑫 · 五月 29, 2022 1m read

第156章 SQL函数 USER

返回当前用户的用户名的函数。

大纲

USER

{fn USER}
{fn USER()}

描述

USER 不接受任何参数并返回当前用户的用户名(也称为授权 ID)。通用函数不允许括号; 标量函数可以指定或省略空括号。

用户名是使用 命令定义的。

的典型用途是在 SELECT 语句选择列表或查询的 WHERE 子句中。在设计报告时, 可用于打印正在为其生成报告的当前用户。

示例

以下示例返回当前用户名:

SELECT USER AS CurrentUser

yx

以下示例选择姓氏 ( 或名字(没有中间首字母)与当前用户名匹配的那些记录:

SELECT Name FROM Sample.Person 
WHERE %SQLUPPER(USER)=%SQLUPPER($PIECE(Name,',',1)) 
OR %SQLUPPER(USER)=%SQLUPPER($PIECE($PIECE(Name,',',2),' ',1))
0
0 136
文章 姚 鑫 · 五月 28, 2022 2m read

第155章 SQL函数 UPPER

将字符串表达式中的所有小写字母转换为大写字母的大小写转换函数。

大纲

UPPER(expression)

UPPER expression

参数

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

描述

UPPER 函数将所有字母字符转换为大写字母。这是 LOWER 函数的反函数。 保留不变的数字、标点符号和前导或尾随空格。

不强制将数字解释为字符串。 SQL 从数字中删除前导零和尾随零。指定为字符串的数字保留前导零和尾随零。

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

$SYSTEM.SQL.Functions.UPPER(expression)

是字母大小写转换的标准函数,而不是排序规则。对于大写排序规则,使用 %SQLUPPER,它提供了数字、 值和空字符串的高级排序规则。

示例

以下示例返回所有名称,选择那些名称的大写形式以开头的名称:

SELECT Name
FROM Sample.Person
WHERE UPPER(Name) %STARTSWITH UPPER('JO')
0
0 163
文章 姚 鑫 · 五月 27, 2022 4m read

第154章 SQL函数 UNIX_TIMESTAMP

注:此函数IRIS可用,Cache不可用。

将日期表达式转换为 UNIX 时间戳的日期/时间函数。

大纲

UNIX_TIMESTAMP([date-expression])

参数

  • date-expression - 可选 — 作为列名称、另一个标量函数的结果或日期或时间戳文字的表达式。 UNIX_TIMESTAMP 不会从一个时区转换到另一个时区。如果省略 date-expression,则默认为当前 时间戳。

描述

返回一个 时间戳,即自 以来的秒数(和小数秒)。

如果不指定 ,则 默认为当前 时间戳。因此,假设系统范围的默认精度为 , 等效于 。

如果指定 , 会将指定的 值转换为 时间戳,计算该时间戳的秒数。 可以返回正数或负数秒数。

将其值作为数据类型 返回。它可以返回小数秒的精度。如果不指定 date-expression,它将采用当前配置的系统范围精度。如果指定 ,它将从 获取其精度。

日期表达式值

可选的日期表达式可以指定为:

  • ODBC 时间戳值(数据类型 %Library.TimeStamp):
  • 时间戳值(数据类型 ):编码的 64 位有符号整数。
  • 日期值(数据类型 ):自 1以来的天数,其中第 天是 。
  • 时间戳,带或不带小数秒:。

不进行时区转换:如果 为 UTC 时间,则返回 UTC UnixTime

0
0 353
文章 姚 鑫 · 五月 26, 2022 2m read

第153章 SQL函数 UCASE

将字符串中的所有小写字母转换为大写字母的大小写转换函数。

大纲

UCASE(string-expression)

{fn UCASE(string-expression)}

参数

  • string-expression - 要将其字符转换为大写的字符串。表达式可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHARVARCHAR)。

描述

UCASE 将小写字母转换为大写以进行显示。它对非字母字符没有影响;它保留不变的数字、标点符号和前导或尾随空格。

请注意,UCASE 可用作 标量函数(使用花括号语法)或 SQL 通用函数。

UCASE 不强制将数字解释为字符串。 从数字中删除前导零和尾随零。指定为字符串的数字保留前导零和尾随零。

UCASE 不影响排序规则。 函数是 中为不区分大小写的排序规则转换数据值的首选方法。

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

$SYSTEM.SQL.UPPER(expression)

示例

以下示例以大写字母返回每个人的姓名:

SELECT Name,{fn UCASE(Name)} AS CapName
     FROM Sample.Person

也适用于 (非

0
0 131
文章 Lilian Huang · 五月 26, 2022 2m read

#Open Exchange

您可能已经看到邀请分享您的 Open Exchange 应用程序的演示:Share a Demo of Your Open Exchange Application
它背后的服务——InterSystems Online Demo Server (ODS)——这不是什么新事物

作为奖励积分,我在 21 年 3 月的 InterSystems 开发者工具大赛:InterSystems Developer Tools Contest 中第一次看到它。
在后来的比赛中成为一个固定的奖励项目。实际是#24。
到今天,我们已经看到 OEX 中列出了 80 个可在 ODS 上使用的软件包:80 packages listed in OEX as available on ODS 

对我来说,开发人员的优势是显而易见的:

  • 给予您的“客户”直接访问您产品的渠道。
    • 视频也是一个很好的推广工具。
    • 但是您知道使用自己的产品并没有那么令人印象深刻。
  • 您的 Docker 容器是在“规范”安装中构建的。
    • 毫无疑问,Docker 是一个令人印象深刻的工具。
    • 在 Win、MAC 和 Linux 上有各种可能会让人头疼的版本。
    • 我跳过关于特殊功能和设置的个人赘述。
    • 您的“客户”可以节省时间来快速查看您提供的方案。
    • 您可以确定他会看到您计划让他看到的内容。
0
0 187
文章 姚 鑫 · 五月 24, 2022 1m read

第152章 SQL函数 $TSQL_NEWID

大纲

$TSQL_NEWID()

描述

$TSQL_NEWID 返回一个全局唯一 ID (GUID)。 用于在偶尔连接的系统上同步数据库。 是一个 个字符的字符串,由 个十六进制数字组成,由连字符分成五组。它的数据类型是 。

在 SQL 中提供了 以支持。对应的 TSQL 函数是 。

函数不接受任何参数。请注意,参数括号是必需的。

抽象类提供对全局唯一 ID 的支持,包括 AssignGUID() 方法,该方法可用于为类分配全局唯一 。要生成 值,请使用 方法。

示例

以下示例返回一个 GUID:

SELECT $TSQL_NEWID()

E8B3E0AB-5F5B-4E7F-B59F-166F5A56E055
0
0 154
文章 姚 鑫 · 五月 23, 2022 2m read

[toc]

第151章 SQL函数 %TRUNCATE

将字符串截断为指定长度并应用 EXACT 排序规则的排序规则函数。

大纲

%TRUNCATE(expression[,length])

参数

  • expression - 字符串表达式,可以是列名、字符串文字或另一个函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHARVARCHAR2)。表达式可以是子查询。
  • - 可选 — 截断长度,指定为整数。返回表达式的初始长度字符。如果省略长度,则 排序规则与 %EXACT 排序规则相同。可以用双括号将长度括起来以抑制文字替换:(())。

描述

将表达式截断为指定的长度,然后在 排序规则序列中返回它。

排序规则首先按数字顺序排列纯数值( 的值),然后是字符串排序规则序列中的所有其他字符。 EXACT 字符串整理顺序与 标准 整理顺序相同:在大写字母字符之前整理数字,在小写字母字符之前整理大写字母字符。标点符号出现在序列中的多个位置。

通过 不变。

%TRUNCATE 是一个 SQL 扩展,用于 SQL 查找查询。

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

DHC-APP>  WRITE $SYSTEM.SQL.TRUNCATE("This long string",9)
This long

示例

以下示例使用 返回 值的前四个字符:

SELECT TOP 5 Name,%TRUNCATE(Name,4) AS ShortName
FROM Sample.Person
0
0 131
文章 Michael Lei · 五月 23, 2022 1m read

大家是不是经常遇到以下情况:

  • 系统有 bug 但是无法在本地复现
  • 你需要在受影响的实例中运行几行代码
  • 能完整访问系统管理门户,但是没有终端或者管理控制台, 也不能访问 Studio, Atelier 或者 VSCode
  • 你要怎么运行你的几行代码来测试???
0
0 278
文章 姚 鑫 · 五月 22, 2022 5m read

第150章 SQL函数 TRUNCATE

标量数值函数,按指定位数截断一个数。

大纲

{fn TRUNCATE(numeric-expr,scale)}

参数

  • numeric-expr - 要截断的数字。数字或数字表达式。
  • scale - 计算结果为一个整数的表达式,该整数指定要截断的位数,从小数点开始计算。可以是零、正整数或负整数。如果比例是小数,会将其舍入为最接近的整数。

Truncate返回或数据类型。如果的数据类型为,则返回;否则返回。

描述

通过从小数点开始按小数位数截断。它不对数字进行四舍五入,也不添加填充零。在截断操作之前,将删除前导零和尾随零。

  • 如果小数位数为正数,则在小数点右侧的位数处执行截断。如果小数位数等于或大于小数位数,则不会发生截断或零填充。
  • 如果Scale为零,则该数字将被截断为整数。换句话说,在小数点右侧的零位数处执行截断;所有小数位和小数点本身都被截断。
  • 如果小数位数为负数,则在小数点左侧的位数处执行截断。如果小数位数等于或大于数字中的整数位数,则返回零。
  • 如果NUMERIC-EXPR为零(但表示为、-0等)。返回(零),不带小数位数,无论小数位数是多少。
  • 如果或为,则返回。

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

ROUND可用于对数字执行类似的截断操作。可用于对字符串执行类似的截断操作。

0
0 337
文章 姚 鑫 · 五月 21, 2022 4m read

第149章 SQL函数 TRIM

字符串函数,它返回删除了指定的前导和/或尾随字符的字符串。

大纲

TRIM([end_keyword] [characters FROM] string-expression)

参数

  • end_keyword - 可选 — 一个关键字,指定要剥离的字符串表达式的哪一端。可用值为 LEADINGTRAILING 或 。默认为两者。
  • - 可选 — 一个字符串表达式,指定要从字符串表达式中删除的字符。指定字符的每个实例都从指定的末端被剥离,直到遇到此处未指定的字符。因此 返回 ‘c’。在此示例中, 关键字是可选的。如果未指定字符, 会去除空格。如果指定了字符,则需要 关键字。如果指定了 而未指定字符,则允许使用 关键字(但不是必需的)。如果没有指定这些参数,则不允许使用 关键字。
  • - 要剥离的字符串表达式。字符串表达式可以是列名、字符串文字或另一个函数的结果,其中基础数据类型可以表示为任何字符类型(例如 或 VARCHAR2)。如果省略了字符和 ,则省略 关键字。

描述

从提供的值的开头和/或结尾去除指定的字符。默认情况下,去除字母是区分大小写的。当遇到未在字符中指定的字符时,从任一端停止字符剥离。默认是从字符串表达式的两端去除空格。

无论要修剪的输入表达式的数据类型如何, 始终返回数据类型 。

请注意,在将数字提供给 TRIM 或任何其他

0
0 135
文章 姚 鑫 · 五月 19, 2022 10m read

第147章 SQL函数 TO_TIMESTAMP

将格式化字符串转换为时间戳的日期函数。

大纲

TO_TIMESTAMP(date_string[,format])

参数

  • date_string - 要转换为时间戳的字符串表达式。此表达式可能包含日期值、时间值或日期和时间值。
  • format - 可选 — 对应于 date_string 的日期和时间格式字符串。如果省略,则默认为 DD MON YYYY HH:MI:SS

描述

TO_TIMESTAMP 函数将各种格式的日期和时间字符串转换为标准时间戳,数据类型为 。 返回具有以下格式的时间戳:

yyyy-mm-dd hh:mm:ss

始终包括前导零。时间使用 小时制指定。默认情况下,返回的时间戳不包括小数秒。

注意: 以 格式返回标准时间戳。 TO_POSIXTIME 返回一个编码的 位时间戳。 是新编程的推荐时间戳格式。

必须指定匹配的 和格式。如果省略格式,则 必须匹配 。

如果 省略了时间戳的组成部分,则 提供缺少的组成部分。如果 date_string 和 都省略了年份,则 默认为当前年份;如果只有 省略了年份,则默认为 00,根据年份格式元素扩展为四位数年份。如果省略日或月值,则 默认为 ; 默认为 。因此,如果 和

0
0 251
文章 姚 鑫 · 五月 18, 2022 10m read

第146章 SQL函数 TO_POSIXTIME

注:此函数在IRIS版本可用,Cache不可用。

将格式化的日期字符串转换为 %PosixTime 时间戳的日期/时间函数。

大纲

TO_POSIXTIME(date_string[,format])

参数

  • date_string - 要转换为 %PosixTime 时间戳的字符串表达式。此表达式可能包含日期值、时间值或日期和时间值。
  • format - 可选 — 对应于 的日期和时间格式字符串。如果省略,则默认为 DD MON YYYY HH:MI:SS

描述

函数将各种格式的日期和时间字符串转换为 时间戳,数据类型为 。 返回 时间戳作为计算值,该值基于从 的任意起点经过的秒数,编码为 位有符号整数。从该日期开始经过的实际秒数(和小数秒)是 ,一个数值。 对 Unix® 时间戳进行编码以生成 时间戳。由于 时间戳值已编码,因此 表示为 。 之前的日期具有负整数值。

不转换时区;本地日期和时间转换为本地 时间戳; UTC 日期和时间将转换为 时间戳。

支持的最早日期为 ,其逻辑值为 。支持的最后日期为 ,其逻辑值为 。这些限制对应于 ODBC 日期格式显示限制。可以使用 和 参数进一步限制这些值。可以使用 方法来确定数值是否为有效的 值。

0
0 152
文章 姚 鑫 · 五月 17, 2022 4m read

第145章 SQL函数 TO_NUMBER

将字符串表达式转换为 NUMERIC 数据类型的值的字符串函数。

大纲

TO_NUMBER(string-expression)

TONUMBER(string-expression)

参数

  • string-expression - 要转换的字符串表达式。表达式可以是列名、字符串文字或另一个函数的结果,其中基础数据类型为 CHARVARCHAR2 类型。

描述

名称 TO_NUMBER 和 可以互换。它们支持 Oracle 兼容性。

TO_NUMBER 将字符串表达式转换为数字数据类型 。但是,如果 的数据类型为 ,则 返回一个数据类型为 的数字。

转换采用数字字符串并通过解析加号和减号、扩展指数符号(或“e”)以及删除前导零将其转换为规范数字。 在遇到非数字字符(例如字母或数字组分隔符)时停止转换。因此字符串 转换为 。如果 的第一个字符是非数字字符串,则 返回 。如果 是空字符串 (),则 返回 0。 将 解析为 . 不解析算术运算。因此字符串 转换为 。如果为字符串表达式指定 ,则 返回 。

数据类型的默认 为 。因此,在 模式下选择此值时, 始终显示返回值,保留 位小数。额外的小数位数四舍五入到小数点后两位;尾随零被解析为两位小数。当通过 xDBC 使用 时,它还返回类型为 , 为 。在 模式或

0
0 189
文章 姚 鑫 · 五月 16, 2022 5m read

第144章 SQL函数 TO_DATE(二)

一年中的某一天(DDD 格式)

可以使用 DDD 将一年中的某一天(自 1 月 1 日以来经过的天数)转换为实际日期。格式字符串 DDD YYYY 必须与由整数天数和四位数年份组成的相应 配对。 (与 一起使用时,两位数的年份必须指定为 (而不是 )。)格式字符串 默认为当前年份。经过的天数必须是 1 到 范围内的正整数(如果 是闰年,则为 )。四位数年份必须在标准 日期范围内: 到 。 和 格式元素可以按任意顺序指定;它们之间的分隔符是强制性的。以下示例显示了这一年中的一天的用法:

/// d ##class(PHA.TEST.SQLFunction).ToDate4()
ClassMethod ToDate4()
{
	NEW SQLCODE
	&sql(
		SELECT TO_DATE('2018:60','YYYY:DDD')
		INTO :a
	)
	if SQLCODE = 0 {
		w a," = ",$ZDATE(a,1,,4) 	
	} else { 
		w "error:",SQLCODE 
	}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).ToDate4()
64708 = 03/01/2018

如果格式字符串同时包含 和

0
0 286
文章 姚 鑫 · 五月 15, 2022 7m read

第143章 SQL函数 TO_DATE(一)

将格式化字符串转换为日期的日期函数。

大纲

TO_DATE(date_string[,format])

TODATE(date_string[,format])

参数

  • date_string - 要转换为日期的字符串。基础数据类型为 CHARVARCHAR2 的字符串日期表达式。
  • - 可选 — 对应于 的日期格式字符串。如果省略格式,DD MON YYYY& 是默认值;此默认值是可配置的。

描述

名称 TO_DATE 和 是可互换的,并且支持 Oracle 兼容性。

TO_DATE 函数将各种格式的日期字符串转换为日期整数值,数据类型为 。它用于输入各种字符串格式的日期,并将它们存储在标准的内部表示中。 返回具有以下格式的日期:

其中 是介于 0(1840 年 12 月 31 日)和 2980013(9999 年 12 月 31 日)之间的正整数,包括端点。这表示天数。时间值被忽略。 1840 年 12 月 31 日之前的日期可以使用儒略日期来表示,如下所述。

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

$SYSTEM.SQL.Functions.TODATE(date_string,format)

在为字段提供默认值时,可以在数据定义中使用 函数。

0
0 368
文章 Michael Lei · 五月 15, 2022 1m read

Hi, 社区!

想和大家分享一下俄罗斯论坛上的一个Debug方法。

假设我想对应用程序进行Debug,我想让它在某一行停止执行。

在代码中加入这一行:

l +d,-d

当我想在这一行中开始调试时,我在终端中屏蔽了d

USER> l +d

执行该应用程序。

应用程序在这一行停止,让我用Studio调试器连接到它。

为了释放锁,我在终端做了以下工作

还有其他好的Debug 建议吗?

0
0 132
文章 姚 鑫 · 五月 14, 2022 4m read

第142章 SQL函数 TO_CHAR(三)

数字到字符串示例

以下嵌入式 SQL 示例显示了基本的数字到字符串的转换:

/// d ##class(PHA.TEST.SQLFunction).ToChar3()
ClassMethod ToChar3()
{
	&sql(
		SELECT 
			TO_CHAR(1000,'9999'),
			TO_CHAR(10,'9999')
		INTO 
			:numfull,:numshort
	)
	if SQLCODE '= 0 {
		w !,"Error code ",SQLCODE 
	} else {
		w !,"Formatted number:",numfull
		w !,"Formatted number:",numshort
		w !,"Note leading blanks" 
	}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).ToChar3()
 
Formatted number: 1000
Formatted number:   10
Note leading blank

返回具有适当数量的前导空格的指定数字。无符号正数前面总是有一个空白字符。如果指定数字的位数少于格式参数,则提供额外的前导空格。

0
0 116
文章 姚 鑫 · 五月 13, 2022 5m read

第141章 SQL函数 TO_CHAR(二)

可以使用 TO_CHAR 将以下 tochar 表达式时间值转换为格式化的时间字符串:

  • $HOROLOG 时间整数($HOROLOG 的时间部分)。 tochar-expression 的值必须是有效的逻辑时间( 到 范围内的整数)。不要提供包含日期和时间组件的完整 值(例如 ); 时间转换会错误地将 的第一个(日期)组件转换为格式化的时间字符串,并忽略第二个(时间)组件。
  • 逻辑时间戳值。 的值必须是 数据类型(不是字符串数据类型),格式为 。时间戳的日期部分被忽略,时间部分被转换。例如, 是一个逻辑时间戳。
  • 标准 ODBC 时间格式的时间值。 的值必须采用 格式,并且可以是字符串。
  • 本地时间格式的时间值(使用当前 NLS 区域设置)。例如,如果 NLS TimeSeparator 设置为,则 的值可以采用 格式,并且可以是字符串。

在所有这些情况下,格式的值必须是一个只包含时间格式代码的字符串:

Format Code Meaning
HH 一天中的小时(1 到 12)
HH12 一天中的小时(1 到 12)
HH24 小时(0 到 23)
MI 分钟(0 到 59)
SS
0
0 224
文章 姚 鑫 · 五月 12, 2022 9m read

第140章 SQL函数 TO_CHAR(一)

将日期、时间戳或数字转换为格式化字符串的字符串函数。

大纲

TO_CHAR(tochar-expression[,format])

TOCHAR(tochar-expression[,format])

参数

  • tochar-expression - 要转换的逻辑日期、时间戳或数字表达式。
  • format - 可选 — 为 tochar 表达式转换指定日期、时间戳或数字格式的字符代码。如果省略,TO_CHAR 将 作为规范数字返回。

描述

名称 TO_CHAR 和 是可互换的,并且支持 Oracle 兼容性。

带格式的 TO_CHAR 函数有五种用途:

  • 将日期整数转换为格式化的日期字符串。

  • 日期在1840年之前转换为朱利安日期int

  • 时间的整数转换为格式化时间生态

  • 将日期和时间格式化的datetime

  • 将数字转换成一个格式化的数字字符串。

这个函数也可以从调用

$SYSTEM.SQL.Functions.TOCHAR(tochar-expression,format)
0
0 439
文章 姚 鑫 · 五月 11, 2022 3m read

第139章 SQL函数 TIMESTAMPDIFF

一个标量日期/时间函数,它返回指定日期部分的两个时间戳之间差异的整数计数。

大纲

{fn TIMESTAMPDIFF(interval-type,startdate,enddate)}

参数

  • interval-type - 返回值将表示的时间/日期间隔类型。
  • startdate - 时间戳值表达式。
  • enddate - 将与 startdate 进行比较的时间戳值表达式。

描述

函数返回指定日期部分间隔(秒、天、周等)的两个给定时间戳之间的差异(即,从另一个中减去一个时间戳)。返回的值是一个 ,即两个时间戳之间的这些间隔数。 (如果 早于 ,则 返回负 值。)

开始日期和结束日期是时间戳。这些时间戳可以是 数据类型格式 () 或 %Library.PosixTime 数据类型格式(编码的 位有符号整数)。

间隔类型参数可以是以下时间戳间隔之一:

  • SQL_TSI_FRAC_SECOND

  • SQL_TSI_SECOND

  • SQL_TSI_MINUTE

0
0 185
文章 姚 鑫 · 五月 10, 2022 4m read

第138章 SQL函数 TIMESTAMPADD

一个标量日期/时间函数,它返回一个新的时间戳,该时间戳是通过将指定日期部分的多个间隔添加到时间戳来计算的。

大纲

{fn TIMESTAMPADD(interval-type,integer-exp,timestamp-exp)}

参数

  • interval-type - integer-exp 表示的时间/日期间隔类型,指定为关键字。
  • integer-exp - 要添加到 的整数值表达式。
  • timestamp-exp - 时间戳值表达式,将增加 的值。

描述

函数通过将指定的日期部分增加指定的单位数来修改日期/时间表达式。例如,如果 是 并且 是 ,则 将 增加五个月。还可以通过为 指定负整数来减少日期部分。

返回与输入 数据类型相同的时间戳。此时间戳可以是 %Library.TimeStamp 数据类型格式 () 或 数据类型格式(编码的 位有符号整数)。

请注意, 只能用作 标量函数(使用大括号语法)。

可以使用 通用函数对时间戳执行类似的时间/日期修改操作。

Interval Types

间隔类型参数可以是以下时间戳间隔之一:

  • SQL_TSI_FRAC_SECOND
  • SQL_TSI_MINUTE

这些时间戳间隔可以使用单引号或双引号来指定,带或不带引号。它们不区分大小写。

0
0 354
文章 姚 鑫 · 五月 9, 2022 1m read

第137章 SQL函数 TAN

标量数值函数,返回角度的正切(以弧度为单位)。

大纲

{fn TAN(numeric-expression)}

参数

  • numeric-expression - 一个数值表达式。这是一个以弧度表示的角度。

TAN 返回 NUMERIC 或 数据类型。如果 是数据类型 DOUBLE,则 TAN 返回 ;否则,它返回 。

描述

接受任何数值并返回其切线。如果传递 值,TAN 返回 。 将非数字字符串视为数值 。

返回一个精度为 、比例为 18 的值。

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

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

示例

以下示例显示了 TAN 的效果。

SELECT {fn TAN(0.52)} AS Tangent 


0.572561830251668415
0
0 152
文章 姚 鑫 · 五月 8, 2022 4m read

第136章 SQL函数 SUBSTRING

字符串函数,它从任何数据类型的数据(包括流数据)中返回一个子字符串。

大纲

SUBSTRING(string-expression,start[,length])

SUBSTRING(string-expression FROM start [FOR length])

{fn SUBSTRING(string-expression,start[,length])}

参数

  • string-expression - 要从中派生子字符串的字符串表达式。表达式,可以是列名、字符串文字或另一个标量函数的结果。字段可以是任何数据类型:字符串(例如 CHARVARCHAR)、数字或数据类型为 或 的数据流字段。
  • - 一个整数,它指定 中开始子字符串的位置。 string-expression 中的第一个字符位于位置 。如果起始位置高于字符串的长度,则 返回一个空字符串 。如果起始位置小于 (零或负数),则子字符串从位置 开始,但子字符串的长度会减少起始位置。
  • - 可选 — 一个整数,指定要返回的子字符串的长度。如果未指定长度,则默认返回字符串的其余部分。

描述

接受任何数据类型的数据并将该数据的子字符串作为数据类型 返回。当然,子字符串可以是作为字符串返回的完整数据值。

的值控制子字符串的起点:

  • 如果 为 1
0
0 212