我需要一個oracle查詢,它在給定兩個時間戳之間每分鐘返回一次。我提到了this堆棧溢出問題。 我們可以改進相同的查詢嗎?Oracle查詢在兩個時間戳之間每分鐘獲取一次
1
A
回答
1
要使用Row Generator技術得到所有兩個日期時間元素之間的分鐘數,你需要在日期之間的差值轉換成分鐘數。在CONNECT BY子句中,其餘部分保持不變。
例如,讓所有的分11/09/2015 11:00:00
和11/09/2015 11:15:00
之間:
SQL> WITH DATA AS
2 (SELECT to_date('11/09/2015 11:00:00', 'DD/MM/YYYY HH24:MI:SS') date_start,
3 to_date('11/09/2015 11:15:00', 'DD/MM/YYYY HH24:MI:SS') date_end
4 FROM dual
5 )
6 SELECT TO_CHAR(date_start+(LEVEL -1)/(24*60), 'DD/MM/YYYY HH24:MI:SS') the_date
7 FROM DATA
8 CONNECT BY level <= (date_end - date_start)*(24*60) +1
9/
THE_DATE
-------------------
11/09/2015 11:00:00
11/09/2015 11:01:00
11/09/2015 11:02:00
11/09/2015 11:03:00
11/09/2015 11:04:00
11/09/2015 11:05:00
11/09/2015 11:06:00
11/09/2015 11:07:00
11/09/2015 11:08:00
11/09/2015 11:09:00
11/09/2015 11:10:00
11/09/2015 11:11:00
11/09/2015 11:12:00
11/09/2015 11:13:00
11/09/2015 11:14:00
11/09/2015 11:15:00
16 rows selected.
以上,CONNECT BY level <= (date_end - date_start)*(24*60) +1
意味着我們正在生成行多達數(date_end - date_start)*(24*60) +1
。您獲得16
行,因爲它包括開始和分鐘的結束窗口。
+0
感謝您的回答。其他答案也是正確的,但我更喜歡這一個。 – thanuja
+0
@thanuja不客氣! –
1
如果你希望所有分鐘SYSDATE至11月15日,您可以創建這樣的:
SELECT to_char(TRUNC(sysdate) + numtodsinterval(level - 1, 'minute'),
'dd.mm.yyyy hh24:mi') min
FROM dual
CONNECT BY LEVEL <=
(trunc((TO_DATE('16-NOV-2015','dd-mon-yyyy')) - sysdate) * 24 * 60);
1
你也可以使用下面,給代替SYSTIMESTAMP和SYSTIMESTAMP + 1
select (systimestamp)+level/(24*60) as Rang_values
from
dual
connect by level
<=
(
select extract(minute from diff)+
extract(day from diff)*24*60 +
extract(hour from diff)*60 as diff
from
(
select systimestamp+1-systimestamp diff from dual
)
)
相關問題
- 1. 在兩次特定時間之間每5分鐘減去一次數據
- 2. 如何獲取兩次查詢之間的時間間隔?
- 3. SQL - 兩個時間戳之間的分鐘總和
- 4. 如何檢查當前時間是否在oracle的兩個時間戳之間
- 5. 時間戳。兩次之間的差異
- 6. 兩個小時之間的Rails查詢時間戳
- 7. 查詢在兩個日期和時間之間獲取記錄
- 8. 每天兩次之間的SQL查詢
- 9. 2個大查詢時間戳字段之間的分鐘差異
- 10. 如何在兩個時間戳之間獲取對象
- 11. 在兩個時間戳之間獲取記錄MySql
- 12. 比較兩個時間戳每分鐘的差異?
- 13. 查找速度大於每分鐘1次的時間戳有間隙
- 14. 在oracle中的兩個時間戳之間搜索數據
- 15. SQL查詢兩個時間戳之間的最大值
- 16. 查詢之間的兩個時間戳記日期
- 17. 查詢中兩個時間戳之間的比較
- 18. 時間片每天兩個時間戳
- 19. SQL選擇時間戳列在兩個時間戳之間
- 20. 檢查給定的時間是否在兩次(小時,分鐘)格式之間
- 21. Oracle - 在兩次之間每小時插入一行
- 22. MySQL:如何在幾秒鐘內獲得兩個時間戳之間的差異
- 23. Laravel:在diffForHumans格式(Carbon)中獲取兩個時間戳之間的時間
- 24. SQL查詢在幾分鐘和幾天之間獲取數據
- 25. db2之間的時間戳查詢
- 26. 查詢之間的mysql時間戳
- 27. 檢查時間在兩次之間
- 28. 現在在哪裏3分鐘前之間的時間戳列
- 29. 想要在兩個不同的時區與joda之間獲得兩個ISO 8601時間之間的分鐘
- 30. 如何找出兩個時間戳之間的天數和分鐘
我希望有一個永久[數字表(http://web.archive.org/web/你的價值觀20150411042510/HTTP://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-numbers-table.html)。本文基於SQL Server,但概念在任何DBMS中都是相同的。 –
@VladimirBaranov不,你不需要這樣的需求的靜態表。你只需要有開始和結束的日期時間,其餘的是一個簡單的分層查詢生成所需的行,通常稱爲[**行生成器**](http://lalitkumarb.com/2015/04/15/生成最新的月名週數天數間兩日,在Oracle的SQL /)。 –
@LalitKumarB,我不是說你需要**一張永久性的桌子。正如您所示,您可以即時生成它,或者您可以將它放在磁盤上。我更喜歡把它放在磁盤上。它在很多情況下都很有用。 –