第三十七章 SQL函数 CURRENT_TIMESTAMP
文章目录
- 第三十七章 SQL函数 CURRENT_TIMESTAMP
- 大纲
- 参数
- 描述
- 精确到小数部分的秒
- 配置精度
- 日期和时间函数比较
- 示例
第三十七章 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
位带符号整数)的时间戳。
以下规则决定返回哪种时间戳格式:
如果将当前时间戳提供给数据类型为
%PosixTime
的字段,则当前时间戳值将以PosixTime
数据类型格式返回。
例如,WHERE PosixField=CURRENT_TIMESTAMP or INSERT INTO MyTable (PosixField) VALUES (CURRENT_TIMESTAMP)
.如果将当前的时间戳提供给数据类型为
%timestamp
的字段,则以timestamp
数据类型格式返回当前的时间戳值。
例如WHERE TSField=CURRENT_TIMESTAMP or INSERT INTO MyTable (TSField) VALUES (CURRENT_TIMESTAMP)
.如果没有上下文提供当前时间戳,则以
timestamp
数据类型格式返回当前时间戳值。
例如:SELECT CURRENT_TIMESTAMP
。
可以使用$HOROLOG
以内部格式存储或返回当前本地日期和时间。
要更改默认的datetime
字符串格式,使用SET OPTION
命令和各种日期和时间选项。
当使用CREATE TABLE
或ALTER TABLE
定义datetime
字段时,可以指定CURRENT_TIMESTAMP
(带精度或不带精度)作为字段的默认值。
CURRENT_TIMESTAMP
可以被指定为数据类型为%Library
的字段的默认值。
PosixTime
或%Library.TimeStamp
;
当前日期和时间以字段的数据类型指定的格式存储。
精确到小数部分的秒
CURRENT_TIMESTAMP
有两种语法形式:
- 如果没有参数括号,
CURRENT_TIMESTAMP
在功能上与NOW
相同。
它使用系统范围内的默认时间精度。 - 带有圆括号的参数
CURRENT_TIMESTAMP(precision)
在功能上与GETDATE
相同,除了CURRENT_TIMESTAMP()
精度参数是强制性的。
CURRENT_TIMESTAMP()
总是返回指定的精度,并忽略配置的系统范围内的缺省时间精度。
分数秒总是被截断,而不是四舍五入到指定的精度。
- 在
TIMESTAMP
数据类型格式中,精度的最大可能数字是9。
实际支持的数字数由precision
参数、配置的默认时间精度和系统能力决定。
如果指定的精度大于配置的默认时间精度,则精度的其他数字将作为尾随零返回。 - 在
POSIXTIME
数据类型格式中,精度的最大可能数字为6
。
每个POSIXTIME
值使用6
位精度计算;
除非提供,否则这些小数数字默认为零。
实际支持的非零位数由precision
参数、配置的缺省时间精度和系统能力决定。
配置精度
默认精度可以通过以下方式配置:
- 使用
TIME_PRECISION
选项设置OPTION
。 - 系统范围的
$SYSTEM.SQL.Util.SetOption()
方法配置选项DefaultTimePrecision
。
要确定当前设置,调用$SYSTEM.SQL.CurrentSettings()
,它显示默认的时间精度;
默认值为0。 - 进入管理门户,选择“系统管理”、“配置”、“SQL和对象设置”、“SQL”。
查看和编辑GETDATE()
、CURRENT_TIME
和CURRENT_TIMESTAMP
的默认时间精度的当前设置。
指定从0
到9
(包括9)的整数,作为返回的十进制精度的默认位数。
默认值为0
。
实际返回的精度取决于平台;
超过系统中可用精度的精度数字将作为零返回。
日期和时间函数比较
GETDATE
和NOW
也可用于返回当前本地日期和时间,作为TIMESTAMP
数据类型或POSIXTIME
数据类型值。
GETDATE
支持精度,NOW
不支持精度。
SYSDATE
与CURRENT_TIMESTAMP
相同,只是SYSDATE
不支持精度。
CURRENT_TIMESTAMP
是首选的SQL函数;
提供SYSDATE
是为了与其他厂商兼容。
GETUTCDATE
可以作为TIMESTAMP
数据类型或POSIXTIME
数据类型值返回通用的(与时区无关的)日期和时间。
请注意,除了GETUTCDATE
之外,所有 SQL时间和日期函数都特定于当地时区设置。
要获得一个通用的(独立于时区的)时间戳,你可以使用GETUTCDATE
或者ObjectScript $ZTIMESTAMP
特殊变量。
要只返回当前本地日期,请使用CURDATE
或CURRENT_DATE
。
要只返回当前本地时间,请使用CURRENT_TIME
或CURTIME
。
这些函数返回DATE
或TIME
数据类型的值。
这些函数都不支持精度。
TIMESTAMP
数据类型的存储格式和显示格式是相同的。
POSIXTIME
数据类型存储格式是一个编码的64
位有符号整数。
TIME
和DATE
数据类型将它们的值存储为$HOROLOG
格式的整数;
当在SQL中显示时,它们被转换为日期或时间显示格式。
默认情况下,嵌入式SQL以逻辑(存储)格式返回。
可以使用CAST
或CONVERT
函数来更改日期和时间的数据类型。
示例
下面的例子以三种不同的方式返回当前本地日期和时间:TIMESTAMP
数据类型格式,具有系统默认时间精度,具有两位小数秒的精度,以及$HOROLOG
内部存储格式,具有全秒:
SELECT CURRENT_TIMESTAMP AS FullSecStamp,CURRENT_TIMESTAMP(2) AS FracSecStamp,$HOROLOG AS InternalFullSec
下面的嵌入式SQL示例设置了区域设置的缺省时间精度。
第一个CURRENT_TIMESTAMP
没有指定精度;
它返回带有默认时间精度的当前时间。
第二个CURRENT_TIMESTAMP
指定精度;
这将覆盖配置的缺省时间精度。
precision
参数可以大于或小于默认的时间精度设置:
ClassMethod CurrentTimestamp()
{InitialVals pre = ##class(%SYS.NLS.Format).GetFormatItem("TimePrecision")
ChangeVals x = ##class(%SYS.NLS.Format).SetFormatItem("TimePrecision",4)&sql(SELECT CURRENT_TIMESTAMP,CURRENT_TIMESTAMP(2) INTO :a,:b)if SQLCODE'=0 {w !,"Error code ",SQLCODE }else {w !,"Timestamp is: ",aw !,"Timestamp is: ",b }
RestoreVals x = ##class(%SYS.NLS.Format).SetFormatItem("$TimePrecision",pre)
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).CurrentTimestamp()Timestamp is: 2022-01-25 09:22:49
Timestamp is: 2022-01-25 09:22:49.49
下面的嵌入式SQL示例比较了本地(特定时区)和通用(独立时区)的时间戳:
ClassMethod CurrentTimestamp1()
{&sql(SELECT CURRENT_TIMESTAMP,GETUTCDATE() INTO :a,:b)IF SQLCODE'=0 {w !,"Error code ",SQLCODE }ELSE {w !,"Local timestamp is: ",aw !,"UTC timestamp is: ",bw !,"$ZTIMESTAMP is: ",$ZDATETIME($ZTIMESTAMP,3,,3)}
DHC-APP>d ##class(PHA.TEST.SQLCommand).CurrentTimestamp1()Local timestamp is: 2022-01-25 09:23:58
UTC timestamp is: 2022-01-25 01:23:58
$ZTIMESTAMP is: 2022-01-25 01:23:58.568
下面的示例将Orders
表中所选行中的LastUpdate
字段设置为当前系统日期和时间。
如果LastUpdate
是数据类型%TimeStamp
, CURRENT_TIMESTAMP
将返回当前日期和时间作为ODBC时间戳;
如果LastUpdate
是数据类型%PosixTime
, CURRENT_TIMESTAMP
返回当前日期和时间为编码的64位有符号整数:
UPDATE Orders SET LastUpdate = CURRENT_TIMESTAMPWHERE Orders.OrderNumber=:ord
下面的例子创建了一个名为Orders
的表,记录收到的产品订单:
CREATE TABLE Orders (OrderId INT NOT NULL,ClientId INT,ItemName CHAR(40) NOT NULL,OrderDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP(3),PRIMARY KEY (OrderId))
OrderDate
列包含收到订单的日期和时间。
它使用TIMESTAMP
数据类型,并使用精度为3的CURRENT_TIMESTAMP
函数插入当前系统日期和时间作为默认值。
第三十七章 SQL函数 CURRENT_TIMESTAMP相关推荐
- 第五十七章 SQL函数 $FIND
文章目录 第五十七章 SQL函数 $FIND 大纲 参数 描述 $FIND, POSITION, CHARINDEX, INSTR 示例 第五十七章 SQL函数 $FIND 字符串函数,返回字符串中子 ...
- 第二十七章 SQL函数 CHARINDEX
文章目录 第二十七章 SQL函数 CHARINDEX 大纲 参数 描述 CHARINDEX, POSITION, $FIND和INSTR 示例 第二十七章 SQL函数 CHARINDEX 一个字符串函 ...
- 第七十七章 SQL函数 LENGTH
文章目录 第七十七章 SQL函数 LENGTH 大纲 参数 描述 示例 第七十七章 SQL函数 LENGTH 返回字符串表达式中字符数的字符串函数. 大纲 LENGTH(string-expressi ...
- 第三十一章 SQL函数 CONVERT
文章目录 第三十一章 SQL函数 CONVERT 参数 描述 CONVERT(datatype,expression,format-code) {fn CONVERT(expression,datat ...
- 第六十七章 SQL函数 ISNUMERIC
文章目录 第六十七章 SQL函数 ISNUMERIC 大纲 参数 描述 示例 第六十七章 SQL函数 ISNUMERIC 测试有效数字的数值函数. 大纲 ISNUMERIC(check-express ...
- 第三十五章 SQL函数 CURRENT_DATE
文章目录 第三十五章 SQL函数 CURRENT_DATE 大纲 描述 示例 第三十五章 SQL函数 CURRENT_DATE 日期/时间函数,返回当前本地日期. 大纲 CURRENT_DATE 描述 ...
- 第三十六章 SQL函数 CURRENT_TIME
文章目录 第三十六章 SQL函数 CURRENT_TIME 大纲 参数 描述 小数秒精度 示例 第三十六章 SQL函数 CURRENT_TIME 返回当前本地时间的日期/时间函数. 大纲 CURREN ...
- 第三十四章 SQL函数 CURDATE
文章目录 第三十四章 SQL函数 CURDATE 大纲 描述 示例 第三十四章 SQL函数 CURDATE 返回当前本地日期的标量日期/时间函数. 大纲 {fn CURDATE()} {fn CURD ...
- 第三十七章 Caché 命令大全 ZWRITE 命令
文章目录 第三十七章 Caché 命令大全 ZWRITE命令 重点 大纲 参数 描述 `ZWRITE`不带参数 `ZWRITE`带参数 Variables Non-Display Characters ...
最新文章
- 杨振宁眼中的物理学之美
- Thinkphp5创建控制器
- GitHub最热!码代码不得不知的所有定律法则
- 不要在nodejs中阻塞event loop
- postgresql 分词_使用PostgreSQL进行中文全文检索
- AI算法连载13:统计之数据预处理特征工程
- 计算机桌面删除,如何删除计算机桌面上的冗余“ IE”浏览器_IT / computer_资料
- Java项目之家庭记账软件
- c语言数据类型上机题,2011计算机二级C语言自测题:数据类型及其运算
- oracle jvm禁用,java-如何减少Sun / Oracle JVM内部开销?
- LeetCode(595)——大的国家(MySQL)
- 转: hibernate配置文件hibernate.cfg.xml和.hbm.xml的详细解释
- 安卓投屏软件_该内容只能用miracast投屏
- 腾讯终于良心了!桌面混乱有救了
- 人工智能商用成果落地撬动AI未来
- c语言生成正弦波,方波等mif
- C++ 读取TXT文件中的数据 每一行空格符相隔的数据单独取出
- Win10自带的SSH服务 scp功能传输文件(linux)
- idea 启动参数设置
- Xcon北京黑客大会明天开幕