台灣最大程式設計社群網站
線上人數
1774
 
會員總數:240847
討論主題:186634
歡迎您免費加入會員
討論區列表 >> Oracle >> 請教ORACLE SQL 系統時間跟資料庫時間比較的問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請教ORACLE SQL 系統時間跟資料庫時間比較的問題
價值 : 60 QP  點閱數:564 回應數:1

樓主

席翁
門外漢
0 8
277 18
發送站內信

捐贈 VP 給 席翁
各位前輩們,你們好!

新手的我這次的問題是想要依

系統時間 大於 資料庫時間 30分鐘 以上 報"NO" 30分內 報"OK"

請問這樣該如何寫?

在網上找的資料跟參考都是時間數值,但是我希望能依資料庫時間跟系統時間做比較,因為這種時間格式不是固定的

所以有點苦手

以下是我目前所寫的SQL,請各位前輩們指點

第一種的是成功寫出來的資料卻因為沒有DIFF_TIME值,而無法判斷 NO 跟 OK 想問我該如何做?把where acq_time=(select max(acq_time)from cv where t1.ID= CV.ID)註掉後就可以成功讀取到,所以我應該在這條裡面如何寫進DIFF_TIME的值?

SELECT DISTINCT id,to_char(ACQ_TIME,'yyyy/mm/dd hh24:mi:ss')as 資料庫時間,to_char(sysdate,'yyyy/mm/dd hh24:mi:ss')as 系統時間,

(extract( hour from ACQ_TIME- (lag(ACQ_TIME) over (partition by ID order by ACQ_TIME)) )*60*60 +
extract( minute from ACQ_TIME- (lag(sysdate) over (partition by ID order by ACQ_TIME)) )*-60 +
round(extract( second from ACQ_TIME- (lag(sysdate) over (partition by ID order by ACQ_TIME)) )))
DIFF_TIME, STAT ,case when (extract( hour from ACQ_TIME- (lag(ACQ_TIME) over (partition by ID order by ACQ_TIME)) )*60*60 +
extract( minute from ACQ_TIME- (lag(sysdate) over (partition by ID order by ACQ_TIME)) )*-60 +
round(extract( second from ACQ_TIME- (lag(sysdate) over (partition by ID order by ACQ_TIME)) ))) > 1800 then 'NO' else 'OK' end as 結果 FROM CV t1

where acq_time=(select max(acq_time)from cv where t1.ID= CV.ID)

ORDER BY id asc

第二種的是最早寫的有很多問題,像是該如何放進判斷限制30分鐘,像是> to_char(sysdate+(30/60/60))這邊我該如何修正才能達到限制30分鐘的條件?

SELECT x.id,s.SERVER_ID,(x.EQPT_STAT) as STAT ,x.ACQ_TIME,case when (TO_char(sysdate-(select max(acq_time)from X))) > to_char(sysdate+(30/60/60)) then 'OK' else 'NO' end as 結果
FROM(select id,sysdate,to_char((sysdate)-ACQ_TIME,'yyyy/mm/dd hh24:mi:ss') as ACQ_TIME,STAT from x t1
where acq_time=(select max(acq_time)from x where t1.id=x.eqpt_id) order by t1.id asc)x
LEFT JOIN s ON x.EQPT_ID=s.EQPT_ID WHERE s.SERVER_ID LIKE 'zzzz%' order by server_id asc,ID asc

希望各位前輩能解惑,謝謝!

PS:之前剛進小舖,跑到常寫的程式語言版上發言,結果被告知有ORACLE版才知道XD

搜尋相關Tags的文章: [ ORACLE ] , [ SQL ] , [ 時間比較 ] ,
本篇文章發表於2016-08-11 09:59
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

席翁
捐贈 VP 給 席翁 檢舉此回應
謝謝各位前輩

我已找到答案,並且寫好了指令

雖然目前前輩們還沒幫我解惑

但是還是感謝各位~

但是這是第一種被我解開~

至於第二種的方式還沒有~如果有哪位前輩有興趣能幫我解

那就非常感謝~~
本篇文章回覆於2016-08-11 16:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.