在oracle中减去时间戳

时间:2014-07-26 19:16:32

标签: sql oracle function timestamp

我希望在函数中获得两个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。

1 个答案:

答案 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)