文章 姚 鑫 · 一月 29, 2022 2m read

第三十八章 SQL函数 CURTIME

返回当前本地时间的标量日期/时间函数。

大纲

{fn CURTIME()}
{fn CURTIME}

描述

``不接受任何参数。它将当前本地时间作为数据类型TIME返回。请注意,参数括号是可选的。CURTIME返回此时区的当前本地时间;它根据本地时间变量(如夏令时)进行调整。

逻辑模式下的CURTIME$HOROLOG格式返回当前本地时间; 例如,37065年。 显示模式下的CURTIME以区域设置的默认格式返回当前本地时间; 例如,10:18:27

小时以24小时格式表示。

要更改默认的时间格式,使用SET OPTION命令和TIME_FORMATTIME_PRECISION选项。

要只返回当前时间,请使用CURTIMECURRENT_TIME。 这些函数以TIME数据类型返回它们的值。 CURRENT_TIMESTAMPGETDATENOW函数也可以作为TIMESTAMP数据类型返回当前日期和时间。

请注意,除了GETUTCDATE之外,所有 SQL时间和日期函数都特定于当地时区设置。 要获得通用的(独立于时区的)当前时间戳,你可以使用GETUTCDATE或ObjectScript $ZTIMESTAMP特殊变量。

在使用嵌入式SQL时,这些数据类型的性能不同。

0
0 83
文章 姚 鑫 · 一月 28, 2022 6m read

第三十七章 SQL函数 CURRENT_TIMESTAMP

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

大纲

CURRENT_TIMESTAMP
CURRENT_TIMESTAMP(precision)

参数

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

CURRENT_TIMESTAMP返回TIMESTAMP数据类型。

描述

CURRENT_TIMESTAMP要么不接受参数,要么接受精度参数。 不允许使用空参数括号。

CURRENT_TIMESTAMP返回当前时区的本地日期和时间; 它会根据当地的时间变化进行调整,例如日光节约时间。

CURRENT_TIMESTAMP可以返回%timestamp数据类型格式(yyyy-mm-dd hh:mm:ss.ffff)%PosixTime数据类型格式(编码的64位带符号整数)的时间戳。 以下规则决定返回哪种时间戳格式:

  1. 如果将当前时间戳提供给数据类型为%PosixTime的字段,则当前时间戳值将以PosixTime数据类型格式返回。 例如,WHERE PosixField=CURRENT_TIMESTAMP or INSERT INTO MyTable (PosixField) VALUES (CURRENT_TIMESTAMP).

0
0 542
文章 姚 鑫 · 一月 28, 2022 3m read

第三十六章 SQL函数 CURRENT_TIME

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

大纲

CURRENT_TIME
CURRENT_TIME(precision)

参数

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

CURRENT_TIME返回时间数据类型。

描述

CURRENT_TIME要么不带参数,要么带精度参数。不允许使用空参数括号。

CURRENT_TIME返回此时区的当前本地时间。它会根据当地时间变化(如夏令时)进行调整。

逻辑模式下的CURRENT_TIME$HOROLOG格式返回当前本地时间;例如,37065。显示模式下的当前时间以区域设置的默认格式返回当前本地时间;例如,10:18:27

要更改默认时间格式,请使用带有time_formattime_PRECISION选项的SET OPTION命令。可以配置分数秒的精度,如下所述。

要仅返回当前时间,请使用CURRENT_TIMECURTIME。这些函数以时间数据类型返回它们的值。CURRENT_TIMESTAMPGETDATENOW函数也可用于将当前日期和时间作为TIMESTAMP数据类型返回。

请注意,除GETUTCDATE之外,所有 SQL时间和日期函数都特定于本地时区设置。

0
0 114
文章 姚 鑫 · 一月 26, 2022 2m read

第三十五章 SQL函数 CURRENT_DATE

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

大纲

CURRENT_DATE

描述

CURRENT_DATE不带任何参数。它将当前本地日期作为数据类型DATE返回。不允许使用参数括号。CURRENT_DATE返回此时区的当前本地日期;它根据本地时间变量(如夏令时)进行调整。

在逻辑模式下CURRENT_DATE$HOROLOG格式返回当前本地日期; 例如,64701。 显示模式下的CURRENT_DATE以区域设置的默认格式返回当前本地日期。 例如,在美国的区域设置为02/22/2018,在欧洲的区域设置为22/02/2018,在俄罗斯的区域设置为22.02.2018

要指定不同的日期格式,请使用TO_DATE函数。要更改默认日期格式,请将SET OPTION命令与DATE_FORMATYear_OPTIONDATE_SEFACTOR选项配合使用。

要仅返回当前日期,请使用CURRENT_DATECURDATE。这些函数以DATE数据类型返回它们的值。CURRENT_TIMESTAMPGETDATENOW函数也可用于将当前日期和时间作为TIMESTAMP数据类型返回。

请注意,除GETUTCDATE之外,所有 SQL时间和日期函数都特定于本地时区设置。

0
0 343
文章 Michael Lei · 一月 26, 2022 5m read

@Robert Cemper 我们全球(几乎是)最资深最活跃粉丝最多的社区成员 (最畅销!). Robert 老师从1970年代就开始从事软件行业,从1978年就开始从事MUMPS, DSM, ... Caché, ...IRIS等等直到今天还在活越地写代码。所以跟着Robert老师超过100篇的社区文章中学习 InterSystems 技术是最好不过的选择了。我们按照主题精选了一些文章,后面会陆续翻译,大家希望优先翻译哪一篇,欢迎在评论区留言。

关于SQL

DB Migration using SQLgateway IRIS 使用 

0
0 296
文章 姚 鑫 · 一月 25, 2022 2m read

第三十四章 SQL函数 CURDATE

返回当前本地日期的标量日期/时间函数。

大纲

{fn CURDATE()}
{fn CURDATE}

描述

CURDATE不接受任何参数。它将当前本地日期作为数据类型DATE返回。请注意,参数括号是可选的。CURDATE返回此时区的当前本地日期;它根据本地时间变量(如夏令时)进行调整。

逻辑模式下的CURDATE$HOROLOG格式返回当前本地日期; 例如,64701。 显示模式下的CURDATE以区域设置的默认格式返回当前本地日期。 例如,在美国的区域设置为02/22/2018,在欧洲的区域设置为22/02/2018,在俄罗斯的区域设置为22.02.2018

要指定不同的日期格式,请使用TO_DATE函数。 要更改默认的日期格式,使用SET OPTION命令和DATE_FORMATYEAR_OPTIONDATE_SEPARATOR选项。

要只返回当前日期,请使用CURDATECURRENT_DATE。 这些函数返回DATE数据类型的值。 CURRENT_TIMESTAMPGETDATENOW函数也可以作为TIMESTAMP数据类型返回当前日期和时间。

请注意,除了GETUTCDATE之外,所有 SQL时间和日期函数都特定于当地时区设置。

0
0 114
文章 Michael Lei · 一月 25, 2022 4m read

有时需要将数据和数据模型Schema从Postgres转移或迁移到IRIS。目前有几个选择可以做到这一点,但最流行的两个选项是使用DBeaver(https://openexchange.intersystems.com/package/DBeaver)或SQLGateway。第一种方法… Cemper的一篇优秀文章中介绍,使用 SQLgateway 迁移数据库(https://community.intersystems.com/post/db-migration-using-sqlgateway),请看本文中如何使用DBeaver执行这种迁移。

为迁移过程获取样本数据

在Github上可以下载一个docker compose项目来构建和运行两个数据库。:

  • 源数据库: 带有样本数据库的PostgreSQL 数据库 Docker 实例 .
  • 目标数据库: 带有Schema就绪接受源数据库的InterSystems IRIS 数据平台Docker 实例.

要获得样本并运行它,请遵循以下步骤:

  1. https://openexchange.intersystems.com/package/migration-pg-iris-dataset 下载并到 git repository.
  2. 克隆项目: git clone https://github.
0
0 596
文章 姚 鑫 · 一月 24, 2022 1m read

第三十三章 SQL函数 COT

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

大纲

{fn COT(numeric-expression)}

参数

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

COT返回NUMERICDOUBLE数据类型。 如果数值表达式是数据类型DOUBLE, COT返回DOUBLE; 否则,返回NUMERIC

描述

COT接受任何非零数,并以浮点数的形式返回它的余切值。 如果传入NULL值,COT将返回NULL。 数值0(0)会导致运行时错误,生成SQLCODE -400(发生致命错误)。 COT将非数字字符串视为数值0

COT返回一个精度为36、刻度为18的值。

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

可以使用DEGREES函数将弧度转换为角度。 可以使用RADIANS函数来转换角度到弧度。

示例

下面的例子展示了COT的效果:

SELECT {fn COT(0.52)} AS Cotangent 

1.746536264145397165
SELECT {fn COT(124.1332)} AS Cotangent 

-0.040311998371146672
0
0 120
文章 Michael Lei · 一月 24, 2022 5m read

现代医疗有无数来自数字技术的机会,包括优化流程的指挥中心、支持洞察力和决策的人工智能和机器学习、提供实时数据的物联网和连接设备,以及管理和保护大型数据流的强大数字基础设施。创建数字孪生和使用虚拟技术来推动医疗行业的真实世界价值将这一切结合起来。

数字孪生在医疗领域的真实世界价值

数字孪生是一个物理对象或过程的虚拟副本,通过模拟和反馈物理对应物来学习和发展。它在动态系统建模的同时部署了人工智能和机器学习,并适用于医疗保健和生命科学环境。数字孪生创造了一个机会,在实施干预措施、路径变化和操作改进之前,对系统的影响进行建模和预测,以实现效益最大化和风险最小化。

这种模拟创造了以下机会:测试情景以预测影响和帮助决策(例如,在系统设计和病人治疗中);识别低效、瓶颈和机会,并模拟效益/副作用(例如,在流程优化中);自动化反应和决策(例如,在环境控制中);以及越来越多地在虚拟环境中进行测试(例如,硅研究 - 美国和欧洲监管机构都在探索在新医疗药物和技术的审批中使用此类 "数字证据")。

0
0 228
文章 姚 鑫 · 一月 23, 2022 1m read

第三十二章 SQL函数 COS

标量数值函数,返回一个角的余弦值(以弧度为单位)。

大纲

{fn COS(numeric-expression)}

参数

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

COS返回NUMERICDOUBLE数据类型。 如果数值表达式是数据类型DOUBLE, COS返回DOUBLE; 否则,返回NUMERIC

描述

COS接受任何数值,并以浮点数的形式返回COS。 返回值的范围是-11(含1)。 如果传入NULL值,COS将返回NULLCOS将非数字字符串视为数值0

COS返回一个精度为19、刻度为18的值。

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

可以使用DEGREES函数将弧度转换为角度。 可以使用RADIANS函数来转换角度到弧度。

示例

这些例子说明了COS对两个正弦函数的影响。

SELECT {fn COS(0.52)} AS Cosine

0.8678191796776499
SELECT {fn COS(-.31)} AS Cosine 

SELECT {fn COS(-.31)} AS Cosine 
0
0 84
文章 姚 鑫 · 一月 22, 2022 8m read

第三十一章 SQL函数 CONVERT

将给定表达式转换为指定数据类型的函数。

CONVERT(datatype,expression[,format-code])

{fn CONVERT(expression,datatype)}

参数

  • expression - 要转换的表达式。
  • datatype - 要将表达式转换为的数据类型。
  • format - 可选-指定日期和时间格式的整数代码,用于在日期/时间/时间戳数据类型和字符数据类型之间进行转换。 此参数仅用于通用标量语法形式。

描述

这里描述了CONVERT函数的两种不同实现。 两者都将一种数据类型中的表达式转换为另一种数据类型中的相应值。 两者都执行日期和时间转换。

注意:这两个CONVERT实现中的参数以不同的顺序表示。 第一个是与MS SQL Server兼容的通用 IRIS标量函数,它接受三个参数。 第二个是带有两个参数的 ODBC标量函数。 下面的文本将分别处理这两种形式的CONVERT

  • CONVERT(datatype,expression)支持流数据的转换。 例如,可以将字符流字段的内容转换为数据类型为VARCHAR的字符串。
  • {fn CONVERT(expression,datatype)}不支持流数据的转换; 指定要表达的流字段将导致SQLCODE -37错误。
0
0 183
文章 姚 鑫 · 一月 21, 2022 2m read

第三十章 SQL函数 CONCAT

标量字符串函数,它返回作为连接两个字符表达式的结果的字符串。

大纲

{fn CONCAT(string-expression1,string-expression2)}

参数

  • string-expression1, string-expression2 - 要连接的字符串表达式。表达式可以是列名、字符串文字、数字或另一个标量函数的结果,其中底层数据类型可以表示为任何字符类型(如CHARVARCHAR)。

描述

连接两个字符串以返回连接的字符串。可以使用连接运算符(||)执行完全相同的操作。

可以连接数字或数字字符串的任意组合;连接结果是一个数字字符串。SQL在连接之前将数字转换为规范形式(指数被扩展,前导零和尾随零被删除)。在连接之前,数字字符串不会转换为规范形式。

可以将前导空格或尾随空格连接到字符串。将空值连接到字符串会产生空值;这是行业范围内的SQL标准。

字符串函数还可用于将两个或多个表达式连接成单个字符串。

示例

以下示例连接Home_StateHome_City列以创建位置值。使用CONCAT函数和concatenate运算符显示两次连接:

SELECT {fn CONCAT(Home_State,Home_City)} AS LocationFunc,
Home_State||Home_City AS LocationOp
FROM Sample.
0
0 273
文章 姚 鑫 · 一月 20, 2022 7m read

第二十九章 SQL函数 COALESCE

返回第一个非空表达式的值的函数。

大纲

COALESCE(expression,expression [,...])
  • expression - 要计算的一系列表达式。多个表达式被指定为逗号分隔的列表。此表达式列表限制为140个表达式。

描述

COALESSE函数按从左到右的顺序计算表达式列表,并返回第一个非空表达式的值。如果所有表达式的计算结果都为NULL,则返回NULL

字符串返回时保持不变;保留前导和尾随空格。数字以规范形式返回,去掉了前导零和尾随零。

返回值的数据类型

非数字表达式(如字符串或日期)必须都属于相同的数据类型,并返回该数据类型的值。指定数据类型不兼容的表达式会导致SQLCODE-378错误,并显示DataType不匹配错误消息。可以使用CAST函数将表达式转换为兼容的数据类型。

数值表达式可以是不同的数据类型。如果指定具有不同数据类型的数值表达式,则返回的数据类型是与所有可能的结果值最兼容的表达式数据类型,即具有最高数据类型优先级的数据类型。

文字值(字符串、数字或NULL)被视为数据类型VARCHAR。如果只指定两个表达式,则文字值与数值表达式兼容:如果第一个表达式是数值表达式,则返回其数据类型;如果第一个表达式是文字值,则返回VARCHAR数据类型。

比较NULL处理函数

0
0 235
文章 姚 鑫 · 一月 19, 2022 3m read

第二十八章 SQL函数 CHAR_LENGTH

返回表达式中的字符数的函数。

大纲

CHAR_LENGTH(expression)

参数

  • expression - 表达式,可以是列名、字符串文字或另一个标量函数的结果。底层数据类型可以是字符类型(如CHARVARCHAR)、数字或数据流。

CHAR_LENGTH返回整数数据类型。

描述

CHAR_LENGTH返回一个整数值,表示指定表达式中的字符数,而不是字节数。表达式可以是字符串,也可以是任何其他数据类型,如数字或数据流字段。返回的整数计数包括前导和尾随空格以及字符串终止字符。如果传递NULL值,则CHARACTER_LENGTH返回NULL,如果传递空字符串(‘’)值,则返回0。

在计算字符之前,会将数字解析为规范形式;不会解析带引号的数字字符串。在下面的示例中,第一个CHAR_LENGTH返回1(因为数字分析删除了前导和尾随零),第二个CHAR_LENGTH返回8

SELECT CHAR_LENGTH(007.0000) AS NumLen,
       CHAR_LENGTH('007.0000') AS NumStringLen
       
1   8

注意:CHAR_LENGTHCHARACTER_LENGTHDATALENGTH函数是相同的。 它们都接受一个流字段参数。

0
0 138
文章 姚 鑫 · 一月 18, 2022 3m read

第二十七章 SQL函数 CHARINDEX

一个字符串函数,它返回子字符串在字符串中的位置,具有可选的搜索起点。

大纲

CHARINDEX(substring,string[,start])

参数

  • substring - 要在字符串中匹配的子字符串。
  • string - 作为子字符串搜索目标的字符串表达式。
  • start - 可选-子字符串搜索的起始点,指定为正整数。 从字符串开始的字符计数,从1开始计数。 若要从字符串的开头开始搜索,请忽略此参数或指定从01开始。 负数、空字符串、NULL或非数字值被视为0

CHARINDEX返回INTEGER数据类型。

描述

CHARINDEX在字符串中搜索子字符串。 如果找到匹配,则返回第一个匹配子字符串的起始位置,从1开始计算。 如果不能找到子字符串,CHARINDEX返回0

空字符串是一个字符串值。 因此,可以将空字符串用于任意一个字符串参数值。 start参数将空字符串值视为0。 但是,请注意ObjectScript空字符串作为NULL传递给 SQL。

NULL不是SQL中的字符串值。 因此,为任何一个CHARINDEX字符串参数指定NULL都会返回NULL

CHARINDEX不能将%Stream.GlobalCharacter字段用于字符串或子字符串参数。尝试这样做会生成SQLCODE-37错误。可以使用SUBSTRING函数获取%Stream.

0
0 181
文章 姚 鑫 · 一月 17, 2022 2m read

第二十六章 SQL函数 CHARACTER_LENGTH

返回表达式中的字符数的函数。

大纲

CHARACTER_LENGTH(expression)

参数

  • expression - 表达式,可以是列名、字符串文字或另一个标量函数的结果。底层数据类型可以是字符类型(如CHARVARCHAR)、数字或数据流。

CHARACTER_LENGTH返回整数数据类型。

描述

CHARACTER_LENGTH返回一个整数值,表示指定表达式中的字符数,而不是字节数。表达式可以是字符串,也可以是任何其他数据类型,如数字或数据流字段。返回的整数计数包括前导和尾随空格以及字符串终止字符。如果传递NULL值,则CHARACTER_LENGTH返回NULL,如果传递空字符串(‘’)值,则返回0

在计算字符之前,会将数字解析为规范形式;不会解析带引号的数字字符串。在下面的示例中,第一个CHARACTER_LENGTH返回1(因为数字分析删除了前导和尾随零),第二个CHARACTER_LENGTH返回8

SELECT CHARACTER_LENGTH(007.0000) AS NumLen,
       CHARACTER_LENGTH('007.0000') AS NumStringLen

注意:CHARACTER_LENGTHCHAR_LENGTHDATALENGTH函数是相同的。

0
0 103
文章 Qiao Peng · 一月 17, 2022 8m read

      各大技术社区常年充斥着关于字符集支持、乱码的问题。Cache’/Ensemble/HealthConnect/IRIS的用户也经常遇到这类问题。为何文字乱码在信息化发展这么久后还会困扰我们?因为字符集、多语言实在有点复杂。

      我计划写三篇:第一篇花点时间回顾一下多语言字符集的简史,第二篇介绍一下各种技术对于字符集和字符编码的使用声明,最后一篇会介绍常见的ISC技术和工具的乱码、尤其是中文乱码的现象和解决办法。

0
3 768
公告 Claire Zheng · 一月 17, 2022

为了帮助您开始使用FHIR,我们发布了一个新的学习路径: Building Basic FHIR Integrations with InterSystems IRIS for Health. 通过这个路径,您可以学习FHIR的基础知识,学习如何在InterSystems IRIS医疗版中设置FHIR端点,将数据应用到FHIR存储库并转换FHIR数据,使用InterSystems API管理器管理FHIR API,以及使用客户端应用查询FHIR资源。该路径包括一些建议,例如使用SDA-FHIR转换将其他数据格式转换为FHIR。  

我们还在考虑如何创建额外的内容,以指导您启用现有的应用程序并利用存储在FHIR存储库之外的数据。这些对您有用吗?关于如何使用FHIR和InterSystems产品,您还想学习什么?

0
0 201
文章 姚 鑫 · 一月 16, 2022 1m read

第二十五章 SQL函数 CHAR

返回具有在字符串表达式中指定的ASCII代码值的字符的字符串函数。

大纲

CHAR(code-value)

{fn CHAR(code-value)}

参数

  • code-value - 与字符相对应的整数代码。

描述

Char返回与指定的整数代码值对应的字符。因为 IRIS是UNICODE系统,所以可以为任何UNICODE字符指定整数代码,从065535。如果code-value是超出允许值范围的整数,则CHAR返回NULL

如果代码值是非数字字符串,则CHAR返回一个空字符串('')。如果传递空值,CHAR返回NULL

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

示例

以下示例均返回字符Z

SELECT CHAR(90) AS CharCode

Z
SELECT {fn CHAR(90)} AS CharCode

Z

下面的示例返回希腊字母lambda

ClassMethod Cast2()
{
	&sql(SELECT {fn CHAR(955)}
	   INTO :greeklet)
	w !,"Greek letter: ",greeklet
}

DHC-APP> d ##class(PHA.TEST.SQLCommand).Cast2()
 
Greek letter: λ
0
0 127
文章 姚 鑫 · 一月 14, 2022 2m read

第二十四章 SQL函数 CEILING

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

大纲

CEILING(numeric-expression)

{fn CEILING(numeric-expression)}

参数

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

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

描述

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

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

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

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

示例

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

SELECT CEILING(167.111) AS CeilingNum1,
       CEILING(167.456) AS CeilingNum2,
       CEILING(167.
0
0 125