本帖最后由 njpolice001 于 2010-11-05 11:54:30 编辑

解决方案 »

  1.   

    SELECT to_char(Trunc(SYSDATE-1,'dd'),'yyyymmdd hh24:mi:ss') start_time,
    to_char(Trunc(SYSDATE+1,'dd')-1/24/60/60,'yyyymmdd hh24:mi:ss') end_time FROM dual;   START_TIME              END_TIME  
    --------------------------------------------
    20101104 00:00:00      20101105 23:59:59
      

  2.   

    有几点啊
    1.between '20101105000000'and '20101105235959'这里就有问题,他会使用
    这两个字符代表的数字去进行比较,而不是时间,必须加上to_date才行。
    比如20100931,20101001你这样数字本应该是2天,但是用你的方法比较应该是70天,所以不对
    2.直接使用to_timestamp转化成你规定的时间格式(yyyymmdd)就行了
      

  3.   


    谢谢
    不过为什么变量赋值后再执行下边的SQL语句,会显示缺失关键字呢?
      

  4.   

    我上次问了,oracle中判断一个字符串是不是合法的日期格式,好象没有?sql server可用 isdate来判断。
      

  5.   

    原封不动的COPY了一遍,重新运行就通过了,汗
      

  6.   

    --要先这样给你变量赋值 前一天开始结束的时间
    SELECT to_char(Trunc(SYSDATE-1,'dd'),'yyyymmdd hh24:mi:ss') into start_time,
    to_char(Trunc(SYSDATE,'dd')-1/24/60/60,'yyyymmdd hh24:mi:ss') into end_time FROM dual;--然后再作查询:
    SELECT * FROM table_name WHERE dt BETWEEN  start_time AND  end_time;
      

  7.   

    to_char(value,'日期格式')转换以后再比较就可以了
      

  8.   

    有几点啊
    1.between '20101105000000'and '20101105235959'这里就有问题,他会使用
    这两个字符代表的数字去进行比较,而不是时间,必须加上to_date才行。
    比如20100931,20101001你这样数字本应该是2天,但是用你的方法比较应该是70天,所以不对
    2.直接使用to_timestamp转化成你规定的时间格式(yyyymmdd)就行了