select count(*) from xx WHERE TRANSFER_DATE BETWEEN TO_DATE((TO_CHAR(SYSDATE,'YYYYMMDD')||'235959'),'YYYY-MM-DD HH24:MI:SS')-10 AND TO_DATE((TO_CHAR(SYSDATE,'YYYYMMDD') ||'000001'),'YYYY-MM-DD HH24:MI:SS')+1;
谁能告诉我 红色部分是什么意思啊

解决方案 »

  1.   

    TRANSFER_DATE在 当前系统日期10天前的 23点59分59秒 到
    当前系统日期1天后的 0点0分1秒 之间
    也就是TRANSFER_DATE在近10天内的数据
      

  2.   

    一层层分析很简单的,那现在的时间举个例子来说
    TO_CHAR(SYSDATE,'YYYYMMDD') 就是 20121227
    ‘20121227’||'235959' ——> '20121227235959'
    to_date('20121227235959','yyyy-mm-dd HH24:MI:SS' --> 2012-12-27 23:59:59
    '2012-12-27 23:59:59'-10 就是 '2012-12-17 23:59:59'
    说到底就是 日期 -->字符串-->日期的过程,不要被他嵌套的结构吓到了,试着分析就好理解
      

  3.   

    || 在oracle中时链接字符串的 ,如'a'||'b'  --> 'ab'
      

  4.   

    在oracle数据库中||相当于sql里面的+,可以用于拼接字符串,拼接后的字符串'20121227235959'
    进行数据类型转换,变成时间类型数据按照'YYYY-MM-DD HH24:MI:SS'(24小时制)格式显示。