2014-03-27 75 views
0

我想在oracle sql中編寫一個查詢,它在當前一天的每一分鐘返回一列。但我還是不知道,如何啓動:-(Oracle每天每分鐘查詢

min 
27.03.2014 00:00 
27.03.2014 00:01 
27.03.2014 00:02 
... 
27.03.2014 23:59 

感謝

+0

你有一個包含這些值的表嗎? – Alexander

+0

@Alexander不,從'tab_times選擇分鐘其中trunc(min,'dd')= trunc(sysdate,'dd')'不是很難:-) – Basti

回答

3

我們可以用算術處理日期,以及簡單的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) 
/
+0

謝謝!我也想過通過'連接',但我發現沒有意義。 – Basti

0
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 
2

可以使用numtodsinterval功能也很簡單:

SELECT to_char(TRUNC(sysdate)+ 
       numtodsinterval (level-1,'minute'),'dd.mm.yyyy hh24:mi') min 
FROM dual 
CONNECT BY LEVEL <= (24*60); 
+0

謝謝,這個查詢是否比APC在您之前發佈的查詢「更好」(對於性能,CPU,無論什麼)? 「解釋」對於這個簡單的查詢不是有用的。 – Basti

+0

別擔心,兩個查詢的計劃都是一樣的。我給了numtodsinterval函數的用法:) .. – ajmalmhd04