当前位置:网站首页>SQL函数 UNIX_TIMESTAMP
SQL函数 UNIX_TIMESTAMP
2022-08-02 13:19:00 【用户7741497】
SQL函数 UNIX_TIMESTAMP
注:此函数IRIS可用,Cache不可用。
将日期表达式转换为 UNIX 时间戳的日期/时间函数。
大纲
UNIX_TIMESTAMP([date-expression])参数
date-expression- 可选 — 作为列名称、另一个标量函数的结果或日期或时间戳文字的表达式。UNIX_TIMESTAMP不会从一个时区转换到另一个时区。如果省略date-expression,则默认为当前UTC时间戳。
描述
UNIX_TIMESTAMP 返回一个 UNIX 时间戳,即自 '1970-01-01 00:00:00'以来的秒数(和小数秒)。
如果不指定 date-expression,则 date-expression 默认为当前 UTC 时间戳。因此,假设系统范围的默认精度为 3,UNIX_TIMESTAMP() 等效于 UNIX_TIMESTAMP(GETUTCDATE(3))。
如果指定 date-expression,UNIX_TIMESTAMP 会将指定的 date-expression 值转换为 UNIX 时间戳,计算该时间戳的秒数。 UNIX_TIMESTAMP 可以返回正数或负数秒数。
UNIX_TIMESTAMP 将其值作为数据类型 %Library.Numeric 返回。它可以返回小数秒的精度。如果不指定 date-expression,它将采用当前配置的系统范围精度。如果指定 date-expression,它将从 date-expression 获取其精度。
日期表达式值
可选的日期表达式可以指定为:
- ODBC 时间戳值(数据类型 %Library.TimeStamp):
YYYY-MM-DD HH:MI:SS.FFF PosixTime时间戳值(数据类型%Library.PosixTime):编码的 64 位有符号整数。$HOROLOG日期值(数据类型%Library.Date):自 1840 年 12 月 31 日以来的天数,其中第1天是1841 年 1 月 1 日。$HOROLOG时间戳,带或不带小数秒:64412,54736。
UNIX_TIMESTAMP 不进行时区转换:如果 date-expression 为 UTC 时间,则返回 UTC UnixTime;如果 date-expression 是本地时间,则返回本地 UnixTime 值。
小数秒精度
小数秒总是被截断而不是四舍五入到指定的精度。
%Library.TimeStamp数据类型格式的日期表达式的最大精度为9。支持的实际位数由日期表达式精度参数、配置的默认时间精度和系统功能确定。如果指定的精度大于配置的默认时间精度,则精度的附加数字将作为尾随零返回。%Library.PosixTime数据类型格式的日期表达式的最大精度为六。每个POSIXTIME值都是使用六位精度计算的;除非提供,否则这些小数位默认为零。
配置精度
可以使用以下配置默认精度:
- 带有
TIME_PRECISION选项的SET OPTION。 - 系统范围的
$SYSTEM.SQL.Util.SetOption()方法配置选项DefaultTimePrecision。要确定当前设置,请调用显示默认时间精度的$SYSTEM.SQL.CurrentSettings();默认值为0。 - 转到管理门户,选择系统管理、配置、SQL 和对象设置、SQL。查看和编辑
GETDATE()、CURRENT_TIME和CURRENT_TIMESTAMP的默认时间精度的当前设置。
指定一个 0 到 9(含)整数作为要返回的默认精度的小数位数。默认值为 0。返回的实际精度取决于平台;超过系统上可用精度的精度数字将返回为零。
日期和时间函数比较
UNIX_TIMESTAMP 返回日期和时间,表示为从任意日期经过的秒数。
TO_POSIXTIME 返回一个编码的 64 位有符号(一个 %PosixTime 时间戳),它是根据 UNIX 时间戳计算的。
GETUTCDATE 以 %TimeStamp(ODBC 时间戳)数据类型或 %PosixTime(编码的 64 位带符号整数)数据类型值的形式返回通用(独立于时区)日期和时间。 %PosixTime 值是根据相应的 UNIX 时间戳值计算得出的。 %PosixTime 编码有助于快速的时间戳比较和计算。 %Library.PosixTime 类提供 UnixTimeToLogical() 方法将 UNIX 时间戳转换为 PosixTime 时间戳,并提供 LogicalToUnixTime() 方法将 PosixTime 时间戳转换为 UNIX 时间戳。这些方法都不执行时区转换。
还可以使用 ObjectScript $ZTIMESTAMP 特殊变量返回通用(时区无关)时间戳。
ObjectScript $ZDATETIME 函数 dformat -2 采用 $HOROLOG 日期并返回 UNIX 时间戳; $ZDATETIMEH dformat -2 采用 UNIX 时间戳并返回 %HOROLOG日期。这些 ObjectScript 函数将本地时间转换为 UTC 时间。 UNIX_TIMESTAMP 不会将本地时间转换为 UTC 时间。
示例
以下示例返回 UTC UNIX 时间戳。第一个选择项采用日期表达式默认值,第二个指定显式 UTC 时间戳:
SELECT
UNIX_TIMESTAMP() AS DefaultUTC,
UNIX_TIMESTAMP(GETUTCDATE(3)) AS ExplicitUTC
1652164931 1652164931以下示例返回当前本地日期和时间的本地 UNIX 时间戳,以及 UTC 日期和时间值的 UTCUNIX 时间戳。第一个选择项指定本地 CURRENT_TIMESTAMP,第二个指定 $HOROLOG(本地日期和时间),第三个指定当前 UTC 日期和时间:
SELECT
UNIX_TIMESTAMP(CURRENT_TIMESTAMP(2)) AS CurrTSLocal,
UNIX_TIMESTAMP($HOROLOG) AS HorologLocal,
UNIX_TIMESTAMP(GETUTCDATE(3)) AS ExplicitUTC
1652193775 1652193775 1652164975以下示例比较了 UNIX_TIMESTAMP(不转换本地时间)和 $ZDATETIME(转换本地时间):
/// d ##class(PHA.TEST.SQLFunction).UCase()
ClassMethod UCase()
{
s unixutc = $ZDATETIME($HOROLOG,-2)
s myquery = "SELECT UNIX_TIMESTAMP($HOROLOG) AS UnixLocal,? AS UnixUTC"
s tStatement = ##class(%SQL.Statement).%New()
s qStatus = tStatement.%Prepare(myquery)
s rset = tStatement.%Execute(unixutc)
d rset.%Display()
}DHC-APP>d ##class(PHA.TEST.SQLFunction).UCase()
UnixLocal UnixUTC
1652193839 1652165039
1 Rows(s) Affected边栏推荐
猜你喜欢
随机推荐
Taurus.MVC V3.0.3 microservice open source framework released: Make the evolution of .NET architecture easier in large concurrency.
Article 48 - Analysis of timestamp2 parameters【2022-08-01】
Summer training camp-week2 graph theory
Flashback Technology of Oracle Database
【typescript】使用antd中RangePicker组件实现时间限制 当前时间的前一年(365天)
js true 3d histogram plugin
第48篇-timestamp2参数分析【2022-08-01】
First acquaintance of scrapy framework 1
【622. 设计循环队列】
.Net 5.0快速上手 Redis
Seata分布式事务
Based on the flask mall administrator functions
百日刷题计划 ———— DAY1
Intouch Historian历史曲线配置导入导出
企业用直播平台能实现什么
分享一个Chrome控制台数据获取的例子
js array recursively use
Cannot determine loading status from target frame detached when selenium chrome driver is running
SQL Server 2019 installation error 0 x80004005 service there is no timely response to the start or control request a detailed solution
How to implement waterfall flow layout (what is waterfall flow layout)









