我希望在函数中获得两个TIMPSTAMP
之间的差异。
输入功能:n_LECT_DATE_TIME_START和n_LECT_DATE_TIME_END。
输出功能:(n_LECT_DATE_TIME_END - n_LECT_DATE_TIME_START)小时。 (的 号? )
此代码不起作用......我收到了2个错误:
Error(5,5): PL/SQL: Statement ignored
和
Error(5,13): PLS-00382: expression is of wrong type
。
FUNCTION check_time(n_LECT_DATE_TIME_START AF_LECTURE.LECT_DATE_TIME_START%TYPE,
n_LECT_DATE_TIME_END AF_LECTURE.LECT_DATE_TIME_END%TYPE)
RETURN number IS
BEGIN
RETURN n_LECT_DATE_TIME_END - n_LECT_DATE_TIME_START;
END check_time;
AF_LECTURE.LECT_DATE_TIME_END和AF_LECTURE.LECT_DATE_TIME_START类型为TIMESTAMP。
答案 0 :(得分:2)
您可以提取天数,将其乘以24,然后提取小时数并将#添加到(天* 24)以获得2个时间戳之间的小时数。
这是2014年7月22日午夜和现在的小时数的说明:
http://sqlfiddle.com/#!4/d41d8/33167/0
select extract(day from timediff) * 24 + extract(hour from timediff) as hours_diff
from (select systimestamp - to_timestamp('2014-07-22', 'yyyy-mm-dd') as timediff
from dual)