我必須創建每分鐘時間演示文稿的表格。 將有三個字段小時:Oracle中的分鐘演示文稿
TIME_DESC值:00:00,00:01,...,12:32,12:33,...,23:58,23:59(根據小時和分鐘) 小時值:00-23(按小時) 分鐘值:00-59(根據分鐘)
因此,單個記錄看起來像||。 01:05 || 01 || 05 ||或|| 22:25 || 22 || 25 ||
如何在單Oracle查詢中實現此表創建?
謝謝。
我必須創建每分鐘時間演示文稿的表格。 將有三個字段小時:Oracle中的分鐘演示文稿
TIME_DESC值:00:00,00:01,...,12:32,12:33,...,23:58,23:59(根據小時和分鐘) 小時值:00-23(按小時) 分鐘值:00-59(根據分鐘)
因此,單個記錄看起來像||。 01:05 || 01 || 05 ||或|| 22:25 || 22 || 25 ||
如何在單Oracle查詢中實現此表創建?
謝謝。
你可以這樣做:
select to_char(hr, '00')||':'||to_char(mi, '00') as time_desc,
to_char(hr, '00') as hours, to_char(mi, '00') as minutes
from (select level-1 from dual connect by level <= 24) as hr cross join
(select level-1 from dual connect by level <= 60) as mi
這裏的關鍵是產生的數字,從0〜23,0〜59,剩下的只是格式化這些你想要的方式。
你可以試試:
WITH t AS (
SELECT to_date('0001-01-01', 'yyyy-mm-dd') + interval '1' MINUTE * (LEVEL-1) datetime
FROM dual
CONNECT BY LEVEL <= 1440
)
SELECT to_char(t.datetime, 'hh24:mi') time,
to_char(t.datetime, 'hh24') hh,
to_char(t.datetime, 'mi') mi
FROM t
Here是小提琴
提示:'interval'1'MINUTE *(LEVEL-1)'等於'numtodsinterval(level-1,'minute')' – 2012-07-16 15:22:58
Thanks @RobvanWijk,其實我也可以做'+(level-1)/ 1440' – 2012-07-16 18:03:02
我認爲 - 比numtodsinterval更短但不夠清晰 – 2012-07-17 06:02:11
[你嘗試過什麼?(http://whathaveyoutried.com) – 2012-07-16 14:29:34
隨着小時和分鐘值衍生自該TIME_DESC值爲什麼你需要三列? – APC 2012-07-16 14:57:12