当前位置:网站首页>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边栏推荐
- 永远退出机器学习界!
- How to improve the originality of self-media creation and create popular works?
- 自动生成代码器推荐-code-gen
- PHP+MYSQL [Student Information Management System] (Minimalist Edition)
- String concatenation in SQL
- UAC绕过学习-总结
- 【C语言】手撕循环结构 —— while语句
- wait() ,notify(),notifyAll()以及wait()与sleep()比较
- Get out of the machine learning world forever!
- 微信小程序getPhoneNumber接口code=40013
猜你喜欢
随机推荐
Mysql 基本操作指南之mysql查询语句
[b01lers2020]Welcome to Earth-1
图论之Prim,最小生成树该怎么解?
【typescript】使用antd中RangePicker组件实现时间限制 当前时间的前一年(365天)
this的绑定指向详细解答
汉源高科千兆12光12电管理型工业以太网交换机 12千兆光12千兆电口宽温环网交换机
scrapy框架初识1
[b01lers2020]Welcome to Earth-1
Mysql index details (with pictures and texts)
你知道图论的spfa吗?
Wireless vibrating wire acquisition instrument remote modification method
The uniapp/applet onload method executes the interpretation every time the page is opened
水平垂直居中方式
什么是 commonjs2
Taurus.MVC V3.0.3 microservice open source framework released: Make the evolution of .NET architecture easier in large concurrency.
js array recursively use
WeChat applet getPhoneNumber interface code=40013
Set proxy server (Google+IE) "Recommended Collection"
永远退出机器学习界!
js数组递归使用









