[英]How to write mysql TIMESTAMPDIFF function in Oracle sql query
我在Mysql中查詢,該查詢使用表中的TIMESTAMPDIFF返回分鍾。 但是現在我已經將數據遷移到了Oracle。 因此,我想使用相同的查詢在Oracle表中獲取TIMESTAMPDIFF。 Oracle在MySQL中也不支持NOW()函數。 查詢中的PROCESS_START_DATE列包含包含日期和時間的數據。 我在oracle中嘗試了EXTRACT函數,但是沒有用。 這是我的查詢:
select * from(
select trunc(abs(to_date('27/01/2015 08:00:00','dd/mm/yyyy hh:mi:ss') - PMS.PROCESS_START_DATE)*24*60),PM.NAME,PM.ENABLED
from PROCESS_MONITOR_STATISTIC PMS
JOIN PROCESS_MONITOR PM ON PM.ID=PMS.PROCESS_MONITOR_ID
WHERE PM.ENABLED=1 AND PM.NAME= 'WORKFLOWENGINE1'
order by PMS.PROCESS_START_DATE desc
)
where ROWNUM = 1
您可以執行以下操作:
--in case you are working with dates
select trunc(abs(to_date('26/01/2015 08:00:00','dd/mm/yyyy hh:mi:ss') - sysdate)*24*60) from dual;
這表示日期與帶有日期的now(sysdate)之間的分鍾數差異。
--timestamp case
select abs(
extract (day from diff)*24*60 + extract (hour from diff)*60 + extract (minute from diff)) from
(select to_timestamp('27/01/2015 09:07:00','dd/mm/yyyy hh:mi:ss') - systimestamp diff from dual);
這表示日期與帶有時間戳的now(systimestamp)之間的分鍾差。
編輯:
此查詢計算一年中的分鍾數:
select 365*24*60 from dual -- this returns 525600
這是您的查詢。 我改變時間。 檢查這些日期之間的時差是一年零五分鍾
select trunc(abs((to_date('26/01/14 09:00:00','dd/mm/yy hh24:mi:ss')-
to_date('26/01/2015 09:05:01','dd/mm/yyyy hh24:mi:ss'))*24*60)) from dual;
因此,運行此查詢結果時為525605
,比一年多五分鍾。 因此,它似乎正在工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.