我需要您的一些幫助。如何獲得Oracle中兩個時間戳之間的平均值
下面的SQL語句應該用於獲取兩個時間戳(e.p_ende和e.p_start之間的差異)之間的計算的毫秒數。 計算工作到目前爲止。 當我在時間戳上只使用一個過濾器時,它也正在工作。
但我需要兩個時間戳之間的值的平均值(lz)。如果我使用這兩個語句,結果始終爲空。
我的第一個聲明是這樣的:
SELECT AVG(LZ)
FROM ORGANIZATION.V_UI_LOG_SEND A,
(SELECT E.P_ID, (EXTRACT(DAY FROM E.P_ENDE)*24*60*60*1000
+EXTRACT(HOUR FROM E.P_ENDE) *60*60*1000
+EXTRACT(MINUTE FROM E.P_ENDE) *60*1000
+EXTRACT(SECOND FROM E.P_ENDE) *1000)
-(EXTRACT(DAY FROM E.P_START)*24*60*60*1000
+EXTRACT(HOUR FROM E.P_START)*60*60*1000
+EXTRACT(MINUTE FROM E.P_START)*60*1000
+EXTRACT(SECOND FROM E.P_START)*1000)AS LZ
FROM ORGANIZATION.V_UI_LOG_RECEIVE E) E
WHERE E.P_ID = A.UI_ID
AND A.P_START >= TO_DATE('20170327070000', 'YYYYMMDDHH24MISS')
AND A.P_START <= TO_DATE('20170327090000', 'YYYYMMDDHH24MISS');
...和第二條帶間,像這樣:
`SELECT AVG(ECHTLZ)
FROM ORGANIZATION.V_UI_LOG_SEND A,
(SELECT E.P_ID, (EXTRACT(DAY FROM E.P_ENDE)*24*60*60*1000
+EXTRACT(HOUR FROM E.P_ENDE) *60*60*1000
+EXTRACT(MINUTE FROM E.P_ENDE) *60*1000
+EXTRACT(SECOND FROM E.P_ENDE) *1000)
-(EXTRACT(DAY FROM E.P_START)*24*60*60*1000
+EXTRACT(HOUR FROM E.P_START)*60*60*1000
+EXTRACT(MINUTE FROM E.P_START)*60*1000
+EXTRACT(SECOND FROM E.P_START)*1000)AS ECHTLZ
FROM ORGANIZATION.V_UI_LOG_RECEIVE E) E
WHERE E.P_ID = A.UI_ID
AND A.P_START between TO_DATE('20170327070000',
'YYYYMMDDHH24MISS')
AND TO_DATE('20170327090000', 'YYYYMMDDHH24MISS');`
感謝您的閱讀和幫助! :)
編輯:
非常感謝大家!解決方案要容易得多。我連接到錯誤的數據庫。這張桌子在那裏存在,名字相同,但沒有數據......第一個聲明一直在正常工作。我很抱歉花費您的寶貴時間!
「P_START」和「P_ENDE」的數據類型是什麼? –
P_START和P_ENDE是時間戳(6) – xTex
奇怪,嘗試'TO_TIMESTAMP之間A.P_START( '20170327070000', 'YYYYMMDDHH24MISS') AND TO_TIMESTAMP( '20170327090000', 'YYYYMMDDHH24MISS')'或'A.P_START TIMESTAMP'之間2017-03-27 07:00:00'AND TIMESTAMP'2017-03-27 09:00:00'' –