sql - 我想在 Informix 数据库中将 Integer 转换为 hh:mm:ss 格式
问题描述
SELECT MAX(longestwaitduration) AS MaxWaitD from myTable;
这里,Columnlongestwaitduration
是Integer
存储毫秒数,数据库是 Informix 版本 11+。
解决方案
这是一个适用于millitimes
具有 INTEGER 列的表的 SELECT 语句milliseconds
:
SELECT milliseconds,
(milliseconds / 1000) AS seconds_f3,
TRUNC(milliseconds/1000) AS tr_seconds,
ROUND(milliseconds/1000) AS ro_seconds,
TRUNC(milliseconds/1000) UNITS SECOND AS tr_iv_s9,
ROUND(milliseconds/1000) UNITS SECOND AS ro_iv_s9,
CAST(TRUNC(milliseconds/1000) UNITS SECOND AS INTERVAL HOUR(9) TO SECOND) AS tr_iv_hs,
CAST(ROUND(milliseconds/1000) UNITS SECOND AS INTERVAL HOUR(9) TO SECOND) AS rd_iv_hs,
(milliseconds/1000) UNITS FRACTION(3) AS iv_s9f3,
CAST((milliseconds/1000) UNITS FRACTION(3) AS INTERVAL HOUR(9) TO FRACTION(3)) AS iv_h2f3
FROM millitimes
ORDER BY milliseconds;
这显示了我是如何朝着解决方案前进的。
关键技巧是:
- 使用 UNITS SECOND 或 UNITS FRACTION(3) 将数字转换为区间,然后
- 将结果转换为您想要的 INTERVAL 类型。如果需要,您可以使用 INTERVAL DAY TO SECOND 或 INTERVAL DAY(9) TO FRACTION(3) 或类似的。
示例数据和架构。
时间是随机值——按两个顺序排列。前六个是使用 0 到 86,400,000(一天中的毫秒数)之间的均匀分布生成的。其余的值是使用“统一对数”算法生成的,因此时间的对数在 1000 毫秒到 864,000,000 毫秒(10 天)的范围内统一生成,然后转换回一个值。它强调较小的值,同时也涵盖较大的值。
CREATE TEMP TABLE millitimes (milliseconds INTEGER NOT NULL PRIMARY KEY);
INSERT INTO millitimes VALUES(65284606);
INSERT INTO millitimes VALUES(40498249);
INSERT INTO millitimes VALUES(83967419);
INSERT INTO millitimes VALUES(35819561);
INSERT INTO millitimes VALUES(72919126);
INSERT INTO millitimes VALUES(43567311);
INSERT INTO millitimes VALUES(75242);
INSERT INTO millitimes VALUES(13043053);
INSERT INTO millitimes VALUES(48569485);
INSERT INTO millitimes VALUES(14161761);
INSERT INTO millitimes VALUES(355773248);
INSERT INTO millitimes VALUES(2599);
INSERT INTO millitimes VALUES(3038);
INSERT INTO millitimes VALUES(359329);
INSERT INTO millitimes VALUES(484870033);
INSERT INTO millitimes VALUES(254664);
INSERT INTO millitimes VALUES(248989810);
INSERT INTO millitimes VALUES(87865);
INSERT INTO millitimes VALUES(2225346);
INSERT INTO millitimes VALUES(2779735);
INSERT INTO millitimes VALUES(1889026);
INSERT INTO millitimes VALUES(48921224);
INSERT INTO millitimes VALUES(43920528);
INSERT INTO millitimes VALUES(321290);
INSERT INTO millitimes VALUES(108176);
INSERT INTO millitimes VALUES(32854);
样本输出:
毫秒 | 秒_f3 | tr_seconds | ro_seconds | tr_iv_s9 | ro_iv_s9 | tr_iv_hs | rd_iv_hs | iv_s9f3 | iv_h2f3 |
---|---|---|---|---|---|---|---|---|---|
整数 | 十进制(20) | 十进制(32,0) | 十进制(32,0) | 间隔秒 (9) 到秒 | 间隔秒 (9) 到秒 | 间隔小时 (9) 到秒 | 间隔小时 (9) 到秒 | 间隔秒 (9) 到分数 (3) | 间隔小时 (9) 到分数 (3) |
2599 | 2.599 | 2 | 3 | 2 | 3 | 0:00:02 | 0:00:03 | 2.599 | 0:00:02.599 |
3038 | 3.038 | 3 | 3 | 3 | 3 | 0:00:03 | 0:00:03 | 3.038 | 0:00:03.038 |
32854 | 32.854 | 32 | 33 | 32 | 33 | 0:00:32 | 0:00:33 | 32.854 | 0:00:32.854 |
75242 | 75.242 | 75 | 75 | 75 | 75 | 0:01:15 | 0:01:15 | 75.242 | 0:01:15.242 |
87865 | 87.865 | 87 | 88 | 87 | 88 | 0:01:27 | 0:01:28 | 87.865 | 0:01:27.865 |
108176 | 108.176 | 108 | 108 | 108 | 108 | 0:01:48 | 0:01:48 | 108.176 | 0:01:48.176 |
254664 | 254.664 | 254 | 255 | 254 | 255 | 0:04:14 | 0:04:15 | 254.664 | 0:04:14.664 |
321290 | 321.29 | 321 | 321 | 321 | 321 | 0:05:21 | 0:05:21 | 321.290 | 0:05:21.290 |
359329 | 359.329 | 359 | 359 | 359 | 359 | 0:05:59 | 0:05:59 | 359.329 | 0:05:59.329 |
1889026 | 1889.026 | 1889 | 1889 | 1889 | 1889 | 0:31:29 | 0:31:29 | 1889.026 | 0:31:29.026 |
2225346 | 2225.346 | 2225 | 2225 | 2225 | 2225 | 0:37:05 | 0:37:05 | 2225.346 | 0:37:05.346 |
2779735 | 2779.735 | 2779 | 2780 | 2779 | 2780 | 0:46:19 | 0:46:20 | 2779.735 | 0:46:19.735 |
13043053 | 13043.053 | 13043 | 13043 | 13043 | 13043 | 3:37:23 | 3:37:23 | 13043.053 | 3:37:23.053 |
14161761 | 14161.761 | 14161 | 14162 | 14161 | 14162 | 3:56:01 | 3:56:02 | 14161.761 | 3:56:01.761 |
35819561 | 35819.561 | 35819 | 35820 | 35819 | 35820 | 9:56:59 | 9:57:00 | 35819.561 | 9:56:59.561 |
40498249 | 40498.249 | 40498 | 40498 | 40498 | 40498 | 11:14:58 | 11:14:58 | 40498.249 | 11:14:58.249 |
43567311 | 43567.311 | 43567 | 43567 | 43567 | 43567 | 12:06:07 | 12:06:07 | 43567.311 | 12:06:07.311 |
43920528 | 43920.528 | 43920 | 43921 | 43920 | 43921 | 12:12:00 | 12:12:01 | 43920.528 | 12:12:00.528 |
48569485 | 48569.485 | 48569 | 48569 | 48569 | 48569 | 13:29:29 | 13:29:29 | 48569.485 | 13:29:29.485 |
48921224 | 48921.224 | 48921 | 48921 | 48921 | 48921 | 13:35:21 | 13:35:21 | 48921.224 | 13:35:21.224 |
65284606 | 65284.606 | 65284 | 65285 | 65284 | 65285 | 18:08:04 | 18:08:05 | 65284.606 | 18:08:04.606 |
72919126 | 72919.126 | 72919 | 72919 | 72919 | 72919 | 20:15:19 | 20:15:19 | 72919.126 | 20:15:19.126 |
83967419 | 83967.419 | 83967 | 83967 | 83967 | 83967 | 23:19:27 | 23:19:27 | 83967.419 | 23:19:27.419 |
248989810 | 248989.81 | 248989 | 248990 | 248989 | 248990 | 69:09:49 | 69:09:50 | 248989.810 | 69:09:49.810 |
355773248 | 355773.248 | 355773 | 355773 | 355773 | 355773 | 98:49:33 | 98:49:33 | 355773.248 | 98:49:33.248 |
484870033 | 484870.033 | 484870 | 484870 | 484870 | 484870 | 134:41:10 | 134:41:10 | 484870.033 | 134:41:10.033 |
推荐阅读
- db2 - IBM Lift CLI - 加载时出现错误“分隔符无效或多次使用”
- ruby - 别名 foo bar 和 just foo = bar 之间的区别
- push-notification - Phonegap Build ,使用 Firebase,通知图标只是白色/灰色方块
- php - Laravel 获取所有数据库连接名称
- laravel - Laravel 5 字符串作为主键
- html - 在哪里添加ahref链接到html
- amazon-web-services - 如何使我在 Amazon EC2 上的网站加载更快
- swift - 第三方库、库、SDK、API 和框架之间的区别?
- sql - SQL 从带有 where 子句的子表中选择项目数
- r - 返回两个数组之间第一个匹配项的有效方法