文章
姚 鑫 · 一月 28 阅读大约需 3 分钟

第三十六章 SQL函数 CURRENT_TIME

第三十六章 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时间和日期函数都特定于本地时区设置。要获得通用的当前时间戳(独立于时区),可以使用GETUTCDATEObjectScript $ZTIMESTAMP特殊变量。

使用嵌入式SQL时,这些数据类型的执行方式不同。时间数据类型以$HOROLOG格式将值存储为整数(作为自午夜以来的秒数);以SQL显示时,它们将转换为时间显示格式;从嵌入式SQL返回时,它们将作为整数返回。时间戳数据类型存储并以相同格式显示其值。可以使用CAST或转换功能来更改时间和日期的数据类型。

CURRENT_TIME可以用作CREATE TABLEALTER TABLE中的默认规范关键字。CURRENT_TIME用作默认规范关键字时不能指定精度参数。

小数秒精度

当前的时间可以返回高达9位数的分数秒精度。精度位数的默认值可以使用以下配置:

  • 使用TIME_PRECISION选项设置选项。
  • 系统范围的$SYSTEM.SQL.Util.SetOption()方法配置选项DefaultTimePrecision
    要确定当前设置,调用$SYSTEM.SQL.CurrentSettings(),它显示默认的时间精度;
    默认值为0。
  • 进入管理门户,选择“系统管理”、“配置”、“SQL和对象设置”、“SQL”。
    查看和编辑GETDATE()CURRENT_TIMECURRENT_TIMESTAMP的默认时间精度的当前设置。

指定从09(包括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
0
0 6
讨论 (0)1
登录或注册以继续