select * from renkou3 where to_char(csrq,'yyyy-mm-dd')='1976-11-26'

解决方案 »

  1.   

    先用:
    select table_name,column_name,data_type from user_tab_columns where table_name='tablename'
    注意表名大写然后转换:
    select * from renkou3 where csrq=to_date('1976-11-26','yyyy-mm-dd')
      

  2.   

    这个语句,如果在csrq上有索引的话,会严重降低查询速度
    select * from renkou3 where to_char(csrq,'yyyy-mm-dd')='1976-11-26'
    建议还是用to_date
    你可以动态转换,没有错啊
    sql ="select * from renkou3 where csrq=to_date(" + var + ",'yyyy……')";
      

  3.   

    设置NLS_DATA_FORMAT='YYYY-MM-DD'就能直接用
    select * from renkou3 where csrq='1976-11-26';
      

  4.   

    sorry, should be
    NLS_DATE_FORMAT
      

  5.   

    在实例级或你的会话中设置 NLS_DATA_FORMAT='YYYY-MM-DD HH24:MI:SS'
    在 init(实例级) 参数文件中设好后,您的字符串到日期型的转换就按上面的格式转了,这是最省事的办法,而且您还可以在字符串中加入小时、分钟、秒等信息。谢谢。
      

  6.   

    最好在程序中指定,这样程序的可移植性最好,如果你修改NLS_DATA_FORMAT参数,固然可行,但是对数据库的要求太苛刻。
      

  7.   

    动态生成的sql,到最后传到数据库的时候也是一个静态的sql.动态生成的时候
    把to_date一起生成不就得了?