如何得到两个日期型变量的差(之间的秒数)?

解决方案 »

  1.   

    d1,d2 均为日期型的字段,哟得到秒数这样做
    select (d1-d2)/86400 from dual;
      

  2.   

    或者可以直接点:
    select to_char(date1,'ss') - to_char(date2,'ss') from dual;To_char() 的格式有许多:
    如:to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') 表示 年月日时分秒
      

  3.   

    牧师 先生说得好像不对吧
    select to_number((d1-d2)/86400) from dual;
      

  4.   

    select (d1-d2)*24*60*60  from dual;
      

  5.   

    呵呵...
    select to_char(date1,'ss') - to_char(date2,'ss') from dual;
    也太直接啦~ (只用 秒来减,不理其中的 年月日时分秒 啦)应该用 select (d1-d2)*24*60*60  from dual 这种方法标准点连 年月日时分秒 一起减之后,再乘.
      

  6.   

    declare
    a date;
    b date;
    begin
      a:=to_date('2003-10-10 11-13-09','yyyy-mm-dd hh-mi-ss');
      b:=to_date('2003-10-09 11-13-09','yyyy-mm-dd hh-mi-ss');
      dbms_output.put_line(to_char(a,'yyyy-mm-dd hh-mi-ss'));
      dbms_output.put_line(to_char(b,'yyyy-mm-dd hh-mi-ss'));
      
      dbms_output.put_line('天:'||to_char(a-b));
      dbms_output.put_line('小时:'||to_char(a-b)*24);
      dbms_output.put_line('分:'||to_char(a-b)*24*60);
      dbms_output.put_line('秒:'||to_char(a-b)*24*60*60);
    end;