Informix:将间隔日期时间转换为秒数



我想把从date1-date2得到的0 00:00:01这样的间隔转换为秒数。

有人知道怎么做吗?它类似于Postgres中的epoch。

给定这样一个表:

CREATE TEMP TABLE times
(
date1    DATETIME YEAR TO SECOND NOT NULL,
date2    DATETIME YEAR TO SECOND NOT NULL
);
INSERT INTO times VALUES('2021-10-03 22:19:37', '2021-10-04 02:47:52');

可以通过各种方式获得两个值之间的秒数,包括:

SELECT date1, date2,
date2 - date1 AS diff_2_1_ivds,
date1 - date2 AS diff_1_2_ivds,
(date2 - date1)::INTERVAL SECOND(9) TO SECOND AS diff_2_1_ivss,
(date1 - date2)::INTERVAL SECOND(9) TO SECOND AS diff_1_2_ivss,
(date2 - date1)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10) AS diff_2_1_vc,
(date1 - date2)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10) AS diff_1_2_vc,
(date2 - date1)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER AS diff_2_1_int,
(date1 - date2)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER AS diff_1_2_int
FROM times;

是的,在转换为数字类型之前,必须转换为字符类型(我使用VARCHAR(10))。如果这两个时间的时间差超过10亿秒(相当于31年多一点),就会出现问题。还有一些其他的技术必须在更长的时间内使用。

输出示例:

diff_2_1_intdiff_1_2_int间隔二(9)第二个VARCHAR (10)VARCHAR (10)整数2021-10-03 22:19:37-16095

最新更新