2 zhwl0124 zhwl0124 于 2014.12.10 22:52 提问

Oracle TO_CHAR函数的问题

数据库存放的日期格式的值,比如 2014-12-10 下午 04:12:13 ,查询的时候使用 to_char(date,'YYYY-MM-DD HH24:MI'),数据库执行结果为 2014-12-10 16:12,在Java中执行SQL,查询结果拿到前台变成了 2014-12-10 16? ,使用 to_char(date,'YYYY-MM-DD HH24-MI') 到前台则是2014-12-10 16-12,为什么第一种会出现这样的情况?求解。

3个回答

eagleyan
eagleyan   Rxr 2014.12.11 05:31
已采纳

还有如果你是用sql plus(以后问问题请用这样的描述,不要说拿到前台,别人会搞不清楚你到底在用什么工具)。你可以用以下语句改变当前session的date format

alter session set NLS_DATE_FORMAT = 'mm-dd-yyyy HH24:mi:ss';

然后你再执行你的SQL,如果这个改变生效,你可以修改你的注册表的NLS_DATE_FORMAT,改成mm-dd-yyyy HH24:mi:ss,你就不用再麻烦了

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG\NLS_DATE_FORMAT

eagleyan
eagleyan 回复zhwl0124: “Java里面执行SQL,查询结果放到页面上显示为2014-12-10 16?”我真看不懂啊,很简单就是你应该分清楚到底是数据库本身的格式问题,还是java转换的问题,问问题的时候得自己分析一下。
接近 3 年之前 回复
zhwl0124
zhwl0124 里面说了啊,Java里面执行SQL,查询结果放到页面上显示为2014-12-10 16?,跟代码看到从数据库中拿到的就是这样的, 而不是PL/SQL中显示的 2014-12-10 16:12
接近 3 年之前 回复
guwei4037
guwei4037   Ds   Rxr 2014.12.10 23:00

to__char(date,'yyyy-mm-dd hh24:mi:ss') 用这个试试,单步调试看看后台拿到的值是否正常,如果正常在前台展示的时候再格式化一下显示(使用了某些组件或者控件之后确实可能会存在这样的问题,比如ext.net,浏览器不同显示的效果可能还不一样,这时就需要在页面显示时再格式化一下)。

guwei4037
guwei4037 回复zhwl0124: 先排除是环境的问题还是程序的问题。如果是环境的问题,需要设置环境变量,变量名:NLS_LANG;变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
接近 3 年之前 回复
zhwl0124
zhwl0124 一样的,遇到第一个:的时候就变成了?后面的值全都不显示。
接近 3 年之前 回复
eagleyan
eagleyan   Rxr 2014.12.11 05:24

你先告诉我如果你在前台执行,得到什么结果,我想先判断是你数据的问题,还是环境的问题
select sysdate from dual;

Csdn user default icon
上传中...
上传图片
插入图片