如何在Oracle中使用循环打印一天中的每一秒(格式时间戳)

qyyhg6bp  于 2023-06-05  发布在  Oracle
关注(0)|答案(3)|浏览(181)

我想在Oracle中使用循环打印一天中的每一秒,例如:
i = 0 -> 00:00:00…i = 59 -> 00:00:59 ... i = 60 -> 00:01:00(这是我困惑的事情,因为当i = 60时,它只是:00:00:60)... 2019 - 07 - 12 00:01:10
有人能帮我吗?多谢了。
请帮我找到一个解决方案或代码的例子,非常感谢。

r55awzrz

r55awzrz1#

您可以使用to_date函数和'sssss'参数,如下所示:

select to_char(to_date(rownum - 1,'sssss'),'hh24:mi:ss')
from dual
connect by rownum <= (24 * 60 * 60)

see a demo(前100秒)

u4dcyp6a

u4dcyp6a2#

或转换为间隔:

select numtodsinterval(level-1,'SECOND') as interval from dual connect by level <= 86400
;
+00 00:00:00.000000
+00 00:00:01.000000
+00 00:00:02.000000
+00 00:00:03.000000
+00 00:00:04.000000
+00 00:00:05.000000
...
bogh5gae

bogh5gae3#

不知道为什么你会想要86,399个时间引用,但是一种方法是通过“递归公共表表达式”(递归CTE):

WITH all_seconds (n) AS (
  SELECT 0 FROM DUAL
  UNION ALL
  SELECT n + 1 FROM all_seconds WHERE n + 1 < 86400
)
SELECT
  LPAD(TRUNC(n / 3600), 2, '0') || ':' ||
  LPAD(TRUNC(MOD(n, 3600) / 60), 2, '0') || ':' ||
  LPAD(MOD(n, 60), 2, '0') AS time
FROM all_seconds

;
| 时间|
| - -----|
| 00:00:00|
| 00:00:01|
| 时间00:00:02|
| 00:00:00:03|
| 00:00:00:04|
| ......这是什么?|
| 时间00:00:56|
| 00:00:57|
| 时间00:00:58|
| 时间00:00:59|
| 00:01:00|
| 时间00:01:01|
| 时间00:01:02|
| 时间00:01:03|

相关问题