我想把从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