如何在 Oracle sql 查询中编写 mysql TIMESTAMPDIFF 函数
How to write mysql TIMESTAMPDIFF function in Oracle sql query
我在 Mysql 中使用 table 中的 TIMESTAMPDIFF 查询 return 分钟。但现在我已经将我的数据迁移到 Oracle。所以我想使用相同的查询在 Oracle 中的 table 中获取 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);
这表示日期与带有时间戳的现在(系统时间戳)之间的分钟差异。
编辑:
此查询计算一年中的分钟数:
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
,一年多了五分钟。所以它看起来很有效。
我在 Mysql 中使用 table 中的 TIMESTAMPDIFF 查询 return 分钟。但现在我已经将我的数据迁移到 Oracle。所以我想使用相同的查询在 Oracle 中的 table 中获取 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);
这表示日期与带有时间戳的现在(系统时间戳)之间的分钟差异。
编辑:
此查询计算一年中的分钟数:
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
,一年多了五分钟。所以它看起来很有效。