中文oracle中Aug 是没法弄的,
你要么自己写转换函数
要么用pb设editmask应该是最方便的。

解决方案 »

  1.   

    I canont open a new paper?
      

  2.   

    可我是要在sql语句的where条件中加个这个比较
      

  3.   

    TO_DATE函数将日期型字符转为日期型数据(例子:'feb 4,97','mon dd,yy'--格式).
      

  4.   

    "Aug 07 2006  2:46PM"这个格式oracle认不认, 还要看oracle的nls_language, 设置美国才行, 设置中国的不不行
      

  5.   

    既然是日期比较还是转换为日期类型比较方便
    oracel数据库中的日期类型使用长整形数值存储的,2006/08/07 14:46:15是转换出来的格式串
    Aug 07 2006  2:46PM转换为日期类型我的环境中nls参数除了字符集ZHS32GB18030外其它都是按美国设置的
    to_date('Aug 07 2006  2:46PM', 'Mon DD YYYY  HH:MM')是错误的
    to_date('8月 07 2006  2:46PM', 'Mon DD YYYY  HH:MM')是正确的如果楼主跟我的情况类似用decode('Jun', '1月','Feb','2月'...)编码一下
    这两个时间精度不同可以trunc(date_column, 'MI')到分钟在比较
      

  6.   

    begin
      if to_date('Aug 07 2006  2:46PM','Month dd yyyy HH:MIPM','NLS_DATE_LANGUAGE=American')
         =
         to_date('2006/08/07 14:46:15','yyyy/mm/dd HH24:MI:SS','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''')
      then
         dbms_output.put_line('相等');
      else
         dbms_output.put_line('不相等');
      end if;
    end;
      

  7.   

    更正一下to_date('8月 07 2006  2:46', 'Mon DD YYYY  HH:MM')是正确的
      

  8.   

    恩 楼上的靠普。我现在也这么弄的。
    不过因为精度不同,我不得不将2:46PM变为2:46:00PM',而且AM PM也需要判断,以决定'Mon DD YYYY  HH:MMpm'或'Mon DD YYYY  HH:MMam'。不然结果是不对的
      

  9.   

    在中文环境中 格式串'上午'对应'AM' '下午'对应'PM'
    Aug和PM都要用decode然后
    to_date('8月 07 2006  2:46下午', 'Mon DD YYYY  HH:MI') = trunc(date_column, 'MI')如果修改环境参数我想应该改NLS_TIMESTAMP_FORMAT,含有时分秒及上午下午
      

  10.   

    同意sozdream() 的
    如果在客户端执行要设置NLS_DATE_LANGUAGE,改过后'Aug 07 2006  2:46PM'是标准的格式,直接to_date('Aug 07 2006  2:46PM', 'Mon DD YYYY  HH:MIPM')就可以了windows 修改注册表中NLS_DATE_LANGUAGE=AMERICAN_AMERICA.ZHS32GB18030
    unix 修改环境变量NLS_DATE_LANGUAGE=AMERICAN_AMERICA.ZHS32GB18030
      

  11.   

    nls_language  设置美国才行
      

  12.   

    现有的一个字符串是 "Aug 07 2006 2:46PM" 这样的格式,要和oracel数据库中的日期类型
    2006/08/07 14:46:15这样的格式比较。结果就是看他俩相等不相等。咋整呢?
    有办法的修改变量做什么,
    写一个function,当相应的英文月份名称转化成中文的
    fun1select to_date(fun1(substr('Aug 07 2006 2:46PM',1,3)||sub('Aug 07 2006 2:46PM',3,length('Aug 07 2006 2:46PM')-3),'mon dd yyyy HH12:MIN') from dual;这样就OK了吧!
      

  13.   

    上面的格式不对:mod dd yyyy hh12:mi a.m.将pm或AM也要转化成中文
      

  14.   

    请lwk_hlj(阿凯(学习oralce中)) 考虑一下这样实现的效率,这样就不会用到索引了。我是做大型数据库的对效率很敏感。另外从程序复杂度和可维护性考虑一下整体成本
      

  15.   

    效率应该还是不错的,不过,你可以在应用层将"Aug 07 2006 2:46PM"这种格式的数据转成和数据库一样的吗?
      

  16.   

    设置NLS_DATE_LANGUAGE=AMERICAN_AMERICA.ZHS32GB18030
    "Aug 07 2006 2:46PM"是标准格式了
    请楼上注意这是Oracle板块,如果应用规模和性能不是问题有必要选Oracle吗?
    日期类型列不建索引做条件等值检索很没效率请楼上仔细看清问题:“"Aug 07 2006  2:46PM" 这样的格式,要和oracel数据库中的日期类型
    2006/08/07 14:46:15这样的格式比较。结果就是看他俩相等不相等”
      

  17.   

    --------------------------------------------------------------
    您好,我们是“2006中国杰出数据库工程师评选”活动组委会。
    您的帖子已经被我们转载到本次评选官方网站的“专家在线答疑”区。
    http://www.bestdba.cn/match_discussion.aspx在那里,进入本次评选终选的30位数据库工程师将与您展开积极的互动。他们会为您的问题提供满意的答案,此外,您还可以在“专家在线答疑”区提出新的问题并参与讨论。您的帖子位于:
    http://www.bestdba.cn/match_discussion3.aspx?pointid=558&pointid2=1&pointid3=5&pcount=stc
    非常感谢您对本次活动的支持!