输入参数date1:2004-9-1--这个参数是字符型的,要在输入的时候进行转换: to_date('2004-9-1','yyyy-mm-dd') 而后一种都把日期类型转换成了字符型.一样的格式,所以可以.

解决方案 »

  1.   

    不过你也可以把参数转换成日期型进行比较 to_date('2004-09-30','yyyy-mm-dd') 也是可以的。
      

  2.   

    select * from table1 where trunc(start_date)>=date1 and trunc(start_date)<=date2;
      

  3.   

    tranc()函数啊,选择日期字段精度!
      

  4.   

    如果date2为Date类型,那么"2004-9-30"系统默认为"2004-9-30 00:00:00",所以2004-9-30以后的记录当然查不到了,to_char(date2,'yyyy-mm-dd')相当于指定了精度,将date2只精确到天。举个例子:
    如果date2="2004-9-30 08:40:00",则to_char(date2,'yyyy-mm-dd')="2004-9-30",故不管后面的时间是多少,2004-9-30这一天的记录都能查得到。
      

  5.   

    谢谢sunzhikai1978() ,"2004-9-30  "系统默认为  "2004-9-30  00:00:00  ",
    问题的关键就是这个。给分