一个比较郁闷的日期比较 中文oracle中Aug 是没法弄的,你要么自己写转换函数要么用pb设editmask应该是最方便的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 I canont open a new paper? 可我是要在sql语句的where条件中加个这个比较 TO_DATE函数将日期型字符转为日期型数据(例子:'feb 4,97','mon dd,yy'--格式). "Aug 07 2006 2:46PM"这个格式oracle认不认, 还要看oracle的nls_language, 设置美国才行, 设置中国的不不行 既然是日期比较还是转换为日期类型比较方便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')到分钟在比较 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; 更正一下to_date('8月 07 2006 2:46', 'Mon DD YYYY HH:MM')是正确的 恩 楼上的靠普。我现在也这么弄的。不过因为精度不同,我不得不将2:46PM变为2:46:00PM',而且AM PM也需要判断,以决定'Mon DD YYYY HH:MMpm'或'Mon DD YYYY HH:MMam'。不然结果是不对的 在中文环境中 格式串'上午'对应'AM' '下午'对应'PM'Aug和PM都要用decode然后to_date('8月 07 2006 2:46下午', 'Mon DD YYYY HH:MI') = trunc(date_column, 'MI')如果修改环境参数我想应该改NLS_TIMESTAMP_FORMAT,含有时分秒及上午下午 同意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.ZHS32GB18030unix 修改环境变量NLS_DATE_LANGUAGE=AMERICAN_AMERICA.ZHS32GB18030 nls_language 设置美国才行 现有的一个字符串是 "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了吧! 上面的格式不对:mod dd yyyy hh12:mi a.m.将pm或AM也要转化成中文 请lwk_hlj(阿凯(学习oralce中)) 考虑一下这样实现的效率,这样就不会用到索引了。我是做大型数据库的对效率很敏感。另外从程序复杂度和可维护性考虑一下整体成本 效率应该还是不错的,不过,你可以在应用层将"Aug 07 2006 2:46PM"这种格式的数据转成和数据库一样的吗? 设置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这样的格式比较。结果就是看他俩相等不相等” --------------------------------------------------------------您好,我们是“2006中国杰出数据库工程师评选”活动组委会。您的帖子已经被我们转载到本次评选官方网站的“专家在线答疑”区。http://www.bestdba.cn/match_discussion.aspx在那里,进入本次评选终选的30位数据库工程师将与您展开积极的互动。他们会为您的问题提供满意的答案,此外,您还可以在“专家在线答疑”区提出新的问题并参与讨论。您的帖子位于:http://www.bestdba.cn/match_discussion3.aspx?pointid=558&pointid2=1&pointid3=5&pcount=stc非常感谢您对本次活动的支持! ORACEL 语句 消耗资源 我问Oracle与SQLServer数据库的不同之处(包括知识点)? 【求助】求助怎样配置PL/SQL监听呢?刚刚接触,请指教! 到底是怎么回事?为何会报这样的错误? 一个查询问题,有点怪。 求一SQL语句,在线等~~~ 数据导出的问题 oracle关于日期的比较问题,急! 怎么查看当前oracle服务器事务的多少 MySQL中什么函数的作用与Oracle中的exception作用相同 请问,oracle中的触发器,存储过程,视图等东西都存储在哪儿啊? 请教SQL SERVER语法转为ORACLE的写法?
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')到分钟在比较
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;
不过因为精度不同,我不得不将2:46PM变为2:46:00PM',而且AM PM也需要判断,以决定'Mon DD YYYY HH:MMpm'或'Mon DD YYYY HH:MMam'。不然结果是不对的
Aug和PM都要用decode然后
to_date('8月 07 2006 2:46下午', 'Mon DD YYYY HH:MI') = trunc(date_column, 'MI')如果修改环境参数我想应该改NLS_TIMESTAMP_FORMAT,含有时分秒及上午下午
如果在客户端执行要设置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
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了吧!
"Aug 07 2006 2:46PM"是标准格式了
请楼上注意这是Oracle板块,如果应用规模和性能不是问题有必要选Oracle吗?
日期类型列不建索引做条件等值检索很没效率请楼上仔细看清问题:“"Aug 07 2006 2:46PM" 这样的格式,要和oracel数据库中的日期类型
2006/08/07 14:46:15这样的格式比较。结果就是看他俩相等不相等”
您好,我们是“2006中国杰出数据库工程师评选”活动组委会。
您的帖子已经被我们转载到本次评选官方网站的“专家在线答疑”区。
http://www.bestdba.cn/match_discussion.aspx在那里,进入本次评选终选的30位数据库工程师将与您展开积极的互动。他们会为您的问题提供满意的答案,此外,您还可以在“专家在线答疑”区提出新的问题并参与讨论。您的帖子位于:
http://www.bestdba.cn/match_discussion3.aspx?pointid=558&pointid2=1&pointid3=5&pcount=stc
非常感谢您对本次活动的支持!