我数据库有俩个字段,简称字段A和字段B吧,这俩个字段都是date格式的,我现在想求出这俩个日期的分钟差,怎么写呢,网上搜的round(to_number(max(dtto.send_date)-min(dtti.send_date))*1440)类型的,算出来的时间不对啊!

解决方案 »

  1.   

    应该对的吧,没必要加number
    用:select round((djsrq-dksrq)*24*60) from table
      

  2.   

    date1-date2  就是天, *24*60 就是分钟。
      

  3.   

    分钟差是指相差的时间转成分钟还是只针对 小时那个域进行比较?select date1 - date2 from dual ;--这样得出日期的差,单位是天.
    你再转成小时不就好了?
      

  4.   

    select round((djsrq-dksrq)*24*60) from table
      

  5.   

    select round((A-B)*24*60) from table
      

  6.   


    首先DATE默认格式为YY-MM-DD(ORACLE版本10.2.0.3.0)
    SQL> CREATE TABLE TEST_1(DATE1 DATE,DATE2 DATE);表が作成されました。
    SQL> INSERT INTO TEST_1 VALUES(TO_DATE(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'),TO_DATE('2011-12-30 22:11:33', 'yyyy-mm-dd hh24:mi:ss'));1行が作成されました。SQL> SELECT * FROM TEST_1;DATE1    DATE2
    -------- --------
    11-11-30 11-12-30
    --你看到了没有,存进来的数值只到日--这样的话,只需要计算日期差,再乘以1440就可以了。并不需要ROUNG()函数
    SQL> SELECT (TO_DATE(DATE1,'YY-MM-DD') - TO_DATE(DATE2,'YY-MM-DD')) * 1440 AS NEW_DATE FROM TEST_1;  NEW_DATE
    ----------
        -43200
    --直接对两列进行加减的话好像会有问题
    SQL> SELECT DATE1 - DATE2 FROM TEST_1;DATE1-DATE2
    -----------
     -730517.92
    --所以还是用TO_DATE()进行了转换。--可以通过
    SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
    --设置默认日期格式,但是一样要通过TO_DATE()函数转换。就这样吧,还是建议楼主多自己试试~~