我想在oracle sql中編寫一個查詢,它在當前一天的每一分鐘返回一列。但我還是不知道,如何啓動:-(Oracle每天每分鐘查詢
min
27.03.2014 00:00
27.03.2014 00:01
27.03.2014 00:02
...
27.03.2014 23:59
感謝
我想在oracle sql中編寫一個查詢,它在當前一天的每一分鐘返回一列。但我還是不知道,如何啓動:-(Oracle每天每分鐘查詢
min
27.03.2014 00:00
27.03.2014 00:01
27.03.2014 00:02
...
27.03.2014 23:59
感謝
我們可以用算術處理日期,以及簡單的CONNECT BY招行產生的氣流。
alter session set nls_date_format='dd-mon-yyyy hh24:mi'
/
with cte as (select trunc(sysdate) as start_date from dual)
select start_date + ((level-1)/(24*60)) as date_w_mins
from cte
connect by level <= (24*60)
/
謝謝!我也想過通過'連接',但我發現沒有意義。 – Basti
SELECT date + minute FROM
(
SELECT TO_DATE('yyyy.mm.dd', '2014.03.27') date FROM DUAL
CROSS JOIN
(
SELECT 0 minute FROM DUAL
UNION ALL
SELECT rownum r
FROM DUAL
CONNECT BY rownum <= 1439
) T
) TT
可以使用numtodsinterval
功能也很簡單:
SELECT to_char(TRUNC(sysdate)+
numtodsinterval (level-1,'minute'),'dd.mm.yyyy hh24:mi') min
FROM dual
CONNECT BY LEVEL <= (24*60);
謝謝,這個查詢是否比APC在您之前發佈的查詢「更好」(對於性能,CPU,無論什麼)? 「解釋」對於這個簡單的查詢不是有用的。 – Basti
別擔心,兩個查詢的計劃都是一樣的。我給了numtodsinterval函數的用法:) .. – ajmalmhd04
你有一個包含這些值的表嗎? – Alexander
@Alexander不,從'tab_times選擇分鐘其中trunc(min,'dd')= trunc(sysdate,'dd')'不是很難:-) – Basti