第三十六章 SQL函数 CURRENT_TIME
返回当前本地时间的日期/时间函数。
大纲
CURRENT_TIME
CURRENT_TIME(precision)
参数
-
precision
- 一个正整数,它将时间精度指定为小数位数。默认值为0
(无小数秒);此默认值是可配置的。
CURRENT_TIME
返回时间数据类型。
描述
CURRENT_TIME
要么不带参数,要么带精度参数。不允许使用空参数括号。
CURRENT_TIME
返回此时区的当前本地时间。它会根据当地时间变化(如夏令时)进行调整。
逻辑模式下的CURRENT_TIME
以$HOROLOG
格式返回当前本地时间;例如,37065
。显示模式下的当前时间以区域设置的默认格式返回当前本地时间;例如,10:18:27
。
要更改默认时间格式,请使用带有time_format
和time_PRECISION
选项的SET OPTION
命令。可以配置分数秒的精度,如下所述。
要仅返回当前时间,请使用CURRENT_TIME
或CURTIME
。这些函数以时间数据类型返回它们的值。CURRENT_TIMESTAMP
、GETDATE
和NOW
函数也可用于将当前日期和时间作为TIMESTAMP
数据类型返回。
请注意,除GETUTCDATE
之外,所有 SQL时间和日期函数都特定于本地时区设置。要获得通用的当前时间戳(独立于时区),可以使用GETUTCDATE
或ObjectScript $ZTIMESTAMP
特殊变量。
使用嵌入式SQL时,这些数据类型的执行方式不同。时间数据类型以$HOROLOG
格式将值存储为整数(作为自午夜以来的秒数);以SQL显示时,它们将转换为时间显示格式;从嵌入式SQL返回时,它们将作为整数返回。时间戳数据类型存储并以相同格式显示其值。可以使用CAST
或转换功能来更改时间和日期的数据类型。
CURRENT_TIME
可以用作CREATE TABLE
或ALTER TABLE
中的默认规范关键字。CURRENT_TIME
用作默认规范关键字时不能指定精度参数。
小数秒精度
当前的时间可以返回高达9
位数的分数秒精度。精度位数的默认值可以使用以下配置:
- 使用
TIME_PRECISION
选项设置选项。 - 系统范围的
$SYSTEM.SQL.Util.SetOption()
方法配置选项DefaultTimePrecision
。
要确定当前设置,调用$SYSTEM.SQL.CurrentSettings()
,它显示默认的时间精度;
默认值为0。 - 进入管理门户,选择“系统管理”、“配置”、“SQL和对象设置”、“SQL”。
查看和编辑GETDATE()
、CURRENT_TIME
和CURRENT_TIMESTAMP
的默认时间精度的当前设置。
指定从0
到9
(包括9
)的整数,作为返回的十进制精度的默认位数。
默认值为0
。
实际返回的精度取决于平台;
超过系统中可用精度的数字将作为零返回。
示例
以下示例返回当前系统时间:
SELECT CURRENT_TIME
9:10:27
下面的示例返回的是当前系统时间,精度为3位小数秒:
SELECT CURRENT_TIME(3)
9:10:34
下面的嵌入式SQL示例返回当前时间。
因为这个时间是以$HOROLOG
格式存储的,所以它被返回为一个整数:
ClassMethod CurrentTime()
{
&sql(SELECT CURRENT_TIME INTO :a)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"Current time is: ",a }
}
DHC-APP> d ##class(PHA.TEST.SQLCommand).CurrentTime()
Current time is: 33104
下面的例子将Contacts
表中选中行的LastCall
字段设置为当前系统时间:
UPDATE Contacts SET LastCall = CURRENT_TIME
WHERE Contacts.ItemNumber=:item
网友评论