我正在尝试满足客户的一个非常困难的报告请求,需要找到一种方法来获取两个DateTime列之间的分钟差异。我曾经尝试使用各种格式的trunc和round,但似乎无法找到合适的组合。是否有一种简洁的方法?如果没有,有没有任何方法可以实现这一点?
SELECT date1 - date2
FROM some_table
返回一个天数差异。将其乘以24可得到小时差异,将24*60乘以分钟差异。因此
SELECT (date1 - date2) * 24 * 60 difference_in_minutes
FROM some_table
应该是你正在寻找的内容。
默认情况下,Oracle日期相减返回的结果是天数。
因此,只需将其乘以24即可获得小时数,再乘以60即可获得分钟数。
示例:
select
round((second_date - first_date) * (60 * 24),2) as time_in_minutes
from
(
select
to_date('01/01/2008 01:30:00 PM','mm/dd/yyyy hh:mi:ss am') as first_date
,to_date('01/06/2008 01:35:00 PM','mm/dd/yyyy HH:MI:SS AM') as second_date
from
dual
) test_data
在where
子句中使用timestampdiff
。
例如:
Select * from tavle1,table2 where timestampdiff(mi,col1,col2).
timestampdiff
这样的函数。 - AgentFire
DATE
类型始终包含年、月、日、小时、分钟和秒组件。相减两个日期只有在它们是同一年、同一月、同一天、同一小时、同一分钟和同一秒时才会返回结果。如果它们精确到秒完全相同,那么返回0应该是正确的答案。 - Justin Cavedate1
和date2
精确到秒完全相同,那么它们相减的结果将等于0。如果date1
和date2
处于同一天但时间不同,它们相减的结果将返回一个大于0但小于1的数字。将其乘以24 * 60
将得到分钟差异。 - Justin Cave