首先说,这个语句很不好
select * from where to_char(ri_qi,'yyyy-mm-dd')=‘2003-01-24’
可以用以下代替
select * from where ri_qi >= to_date('2003-01-24','yyyy-mm-dd')
and ri_qi < to_date('2003-01-25','yyyy-mm-dd')
主要是因为ri_qi如果有索引的话,你的语句的效率会很差
其次说,不可能
oracle 9i以下都不支持sql92语法,而且每个数据库的函数都不一样,怎么移植???
在同一个数据库产品下有可能!

解决方案 »

  1.   

    to_char(ri_qi,'yyyy-mm-dd')这样根本就不用索引,全表扫描
    标准sql只是一个美好的愿望而已
      

  2.   

    题外话:
    语句:
    select * from where to_char(ri_qi,'yyyy-mm-dd')=‘2003-01-24’你可以建立一个表达式索引to_char(ri_qi,'yyyy-mm-dd'),8i和9i都支持,这样也还不错,但是没有楼上说的效率高。关于标准sql,要看你的应用逻辑复杂到什么程度了。像这些格式,时间的函数很难规避的。
      

  3.   

    select * from where ri_qi = to_date('2003-01-24','yyyy-mm-dd')
    这样更好吧,尽量不要在WHERE中对字段进行不必要的操作了,哎……标准??等全世界都进了大中华公荣圈再议了。
      

  4.   

    select * from where ri_qi = to_date('2003-01-24','yyyy-mm-dd')
    是有问题的,如果他的ri_qi中存放的有小时,分钟的信息,就不可以了.
      

  5.   

    看看国外的数据库第三方软件
    那个达到完全使用标准sql都是专用的