当前位置:网站首页>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边栏推荐
- PGSQL database to realize the import and export
- 线程安全问题及关键字synchronized,volatile
- How to implement waterfall flow layout (what is waterfall flow layout)
- Based on the flask mall administrator functions
- Oracle update误操作单表回滚
- [C language] Analysis of function recursion (2)
- SQL Server 2019 installation error 0 x80004005 service there is no timely response to the start or control request a detailed solution
- SQL Server 2014 installation tutorial (nanny-level graphic tutorial)
- 什么是 commonjs2
- Seata Distributed Transaction
猜你喜欢

Do you know Dijkstra of graph theory?

“二舅”火了,自媒体短视频“爆火”的基本要素,你知道吗?

Get out of the machine learning world forever!

SQL Server 2014 installation tutorial (nanny-level graphic tutorial)

Redis all

Enterprise Network Planning Based on Huawei eNSP

Win11怎么修改关机界面颜色?Win11修改关机界面颜色的方法
How to use the database like tap water?|Tencent Cloud Database TDSQL-C

How to create short images and short videos from the media?How to make the click volume reach 10W?

图论之Prim,最小生成树该怎么解?
随机推荐
【622. 设计循环队列】
Basic operations of openGauss database (super detailed)
Detailed explanation of network flow (what information can the flow network diagram generally reflect)
Oracle数据库的闪回技术
k8s之KubeSphere部署有状态数据库中间件服务 mysql、redis、mongo
C语言结构体(入门)
The uniapp/applet onload method executes the interpretation every time the page is opened
【C语言】剖析函数递归(2)
鲁大师7月新机性能/流畅榜:骁龙8+正面对决天玑9000+,性能跑分突破123万!
Reading IDEO, Design Changes Everything
Set proxy server (Google+IE) "Recommended Collection"
Openlayers Quick Start Tutorial
eclipse连接数据库后插入数据报错null
你知道图论的Dijkstra吗?
【C语言】细品分支结构——if-else语句
【C语言】剖析函数递归(1)
【C语言】手撕循环结构 —— for语句
【C语言】手撕循环结构 —— while语句
How to create short images and short videos from the media?How to make the click volume reach 10W?
RISC-V 指令格式和6种基本整数指令