Oracle 甲骨文:如何减去两个日期,得到结果的分钟数
我编写这个函数是为了从一个日期中获取分钟数,但我无法从两个日期之间获取分钟数,如何获取Oracle 甲骨文:如何减去两个日期,得到结果的分钟数,oracle,date,plsql,Oracle,Date,Plsql,我编写这个函数是为了从一个日期中获取分钟数,但我无法从两个日期之间获取分钟数,如何获取 FUNCTION get_minute(p_date DATE) RETURN NUMBER IS BEGIN IF p_date IS NOT NULL THEN return EXTRACT(MINUTE FROM TO_TIMESTAMP(to_char(p_date,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS'));
FUNCTION get_minute(p_date DATE)
RETURN NUMBER
IS
BEGIN
IF p_date IS NOT NULL THEN
return EXTRACT(MINUTE FROM TO_TIMESTAMP(to_char(p_date,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS'));
ELSE
RETURN 0;
END IF;
END get_minute;
在Oracle中减去两个日期后,将得到两个值之间的天数。因此,您只需乘以,即可在几分钟内得到结果:
SELECT (date2 - date1) * 24 * 60 AS minutesBetween
FROM ...
对于那些想要替代两个时间戳(而不是日期)的人,有一个类似的解决方案:
SELECT ( CAST( date2 AS DATE ) - CAST( date1 AS DATE ) ) * 1440 AS minutesInBetween
FROM ...
或
我可以这样处理:
select to_number(to_char(sysdate,'MI')) - to_number(to_char(*YOUR_DATA_VALUE*,'MI')),max(exp_time) from ...
或
如果你想改变时间,只需改变MI
select to_number(to_char(sysdate,'HH24')) - to_number(to_char(*YOUR_DATA_VALUE*,'HH24')),max(exp_time) from ...
其他人不为我工作。
祝你好运。我想你可以调整函数以减去两个时间戳:
return EXTRACT(MINUTE FROM
TO_TIMESTAMP(to_char(p_date1,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS')
-
TO_TIMESTAMP(to_char(p_date2,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS')
);
我认为您可以通过使用CAST(p_date作为时间戳)
来简化它
记住,日期和时间戳在甲骨文中是丑陋的大数字,而不是我们在屏幕上看到的数字;我们不需要告诉他怎么读。
还要记住,时间戳可以定义时区;在这种情况下不是这样。
to_char(p_date,'MI')
可用于分钟提取我建议此答案的可能重复项,因为它不依赖于数据库中存储的日期格式。获取已用分钟数:从my_表中选择(SYSDATE-CAST(日期列作为日期))*1440
return EXTRACT(MINUTE FROM
TO_TIMESTAMP(to_char(p_date1,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS')
-
TO_TIMESTAMP(to_char(p_date2,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS')
);
return EXTRACT(MINUTE FROM cast(p_date1 as TIMESTAMP) - cast(p_date2 as TIMESTAMP));