0 0

java调用SQL返回的日期格式不对,请帮忙看一下。10

SELECT to_char(add_months(SYSDATE, -5),'MON-YY') As mon FROM DUAL  
结果:OCT-10

在java代码中,简要如下:
String sql="SELECT to_char(add_months(SYSDATE, -5),'MON-YY') As MON FROM DUAL";
stat = sdbConn.prepareStatement(sql);
rset = stat.executeQuery();

while (rset.next()) {
Month = rset.getString("MON");
System.out.println("Month:"+ Month);
}

返回的Month的值为“10? -10”

这个是怎么回事啊?

问题补充:<div class="quote_title">mmddonkey 写道</div><div class="quote_div">看起来像是字符集编码的问题 有可能是工程的编码格式 和oracle的不一致</div> <br /><div class="quote_title">mmddonkey 写道</div><div class="quote_div">看起来像是字符集编码的问题 有可能是工程的编码格式 和oracle的不一致</div> <br /> <br /> <br />目前还是没有解决,我的操作系统是英文版的。下面是我的数据库的编码。我的java 工程我改成UTF-8 和 US-ASCII都还是不对。 <br /> <br />

问题补充:<div class="quote_title">dk101 写道</div><div class="quote_div">我觉得应该是数据库字符集编码不正确,和操作系统没有关系,这个是我本机数据库的设置结果: <br />PARAMETER &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE <br /> <br />NLS_LANGUAGE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIMPLIFIED CHINESE <br />NLS_TERRITORY &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHINA <br />NLS_CURRENCY &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ¥ <br />NLS_ISO_CURRENCY &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHINA <br />NLS_NUMERIC_CHARACTERS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ., <br />NLS_CALENDAR &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GREGORIAN <br />NLS_DATE_FORMAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DD-MON-RR <br />NLS_DATE_LANGUAGE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIMPLIFIED CHINESE <br />NLS_CHARACTERSET &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZHS16GBK <br />NLS_SORT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BINARY <br />NLS_TIME_FORMAT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HH.MI.SSXFF AM <br />NLS_TIMESTAMP_FORMAT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DD-MON-RR HH.MI.SSXFF AM <br />NLS_TIME_TZ_FORMAT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HH.MI.SSXFF AM TZR <br />NLS_TIMESTAMP_TZ_FORMAT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DD-MON-RR HH.MI.SSXFF AM TZR <br />NLS_DUAL_CURRENCY &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ¥ <br />NLS_NCHAR_CHARACTERSET &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AL16UTF16 <br />NLS_COMP &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BINARY <br />NLS_LENGTH_SEMANTICS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BYTE <br />NLS_NCHAR_CONV_EXCP &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE <br /> <br />你可也对照一下,进行修改。</div> <br /> <br />谢谢你的帮助。 <br />我在Unix下面就是正常的的显示(JAN-10),在Windows 下就是 <br />10? -10,是不是要在代码写一下编码转化。 <br />

问题补充:我在sql 里面加上<span style="color: red">'NLS_DATE_LANGUAGE = American‘</span> 就可以了,谢谢大家帮忙。 <br />String sql="SELECT to_char(add_months(SYSDATE, -5),'MON-YY','NLS_DATE_LANGUAGE = American‘) As MON FROM DUAL"; <br />
DAO 
2011年3月14日 16:30
  • 大小: 7.3 KB

5个答案 按时间排序 按投票排序

0 0

你定义的那个“Month”是什么类型,时间还是字符串,可能是你这个地方出问题了吧!

2011年3月15日 17:04
0 0

我觉得应该是数据库字符集编码不正确,和操作系统没有关系,这个是我本机数据库的设置结果:
PARAMETER                     VALUE

NLS_LANGUAGE                     SIMPLIFIED CHINESE
NLS_TERRITORY                     CHINA
NLS_CURRENCY                     ¥
NLS_ISO_CURRENCY             CHINA
NLS_NUMERIC_CHARACTERS             .,
NLS_CALENDAR                     GREGORIAN
NLS_DATE_FORMAT                     DD-MON-RR
NLS_DATE_LANGUAGE             SIMPLIFIED CHINESE
NLS_CHARACTERSET             ZHS16GBK
NLS_SORT                     BINARY
NLS_TIME_FORMAT                     HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT             DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT             DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY             ¥
NLS_NCHAR_CHARACTERSET             AL16UTF16
NLS_COMP                     BINARY
NLS_LENGTH_SEMANTICS             BYTE
NLS_NCHAR_CONV_EXCP             FALSE

你可也对照一下,进行修改。

2011年3月15日 11:33
0 0

先在PL/SQL工具(或者SQL Plus)里执行语句,看结果是否正确(是否是自己想要的结果)?如果正确,就是前台Java代码取值的问题;如果不正确,就是Oracle数据库编码的问题,需要重新修改数据库编码。

2011年3月15日 10:56
0 0

同意楼上的,我按照你的sql语句在pl/sql里测试了下,格式正确,所以可能是哪里编码格式没设置好

2011年3月14日 16:30
0 0

看起来像是字符集编码的问题 有可能是工程的编码格式 和oracle的不一致

2011年3月14日 16:30

相关推荐

    java调用SQL方法

    用Java语言调用SQL的语法规则,写的比较详细。希望能对你有所帮助!

    java调用sqlserver存储过程.pdf

    "Java 调用 SQL Server 存储过程" Java 调用 SQL Server 存储过程是指在 Java 应用程序中调用 SQL Server 数据库中的存储过程,以实现数据的增删改查等操作。下面是关于 Java 调用 SQL Server 存储过程的知识点: ...

    Java Sql 格式化工具

    开发者可以参考这个文件了解如何在自己的Java项目中集成和调用SQL格式化功能。 3. **SqlFormatter.java**:这可能是实现SQL格式化逻辑的Java类。它可能包含了读取SQL语句、解析语法结构、应用格式规则以及生成格式...

    Java调用SQL_Server的存储过程详解1

    Java调用SQL_Server的存储过程详解 1使用不带参数的存储过程 2使用带有输入参数的存储过程 3使用带有输出参数的存储过程 4 使用带有返回状态的存储过程 5 使用带有更新计数的存储过程

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式.docx

    转换`java.util.Date`到`java.sql.Date`非常简单,只需要调用`java.sql.Date`的构造器,并传递`java.util.Date`对象的时间戳即可。 ```java java.util.Date utilDate = new java.util.Date(); java.sql.Date sql...

    Java打印漂亮的SQL语句(被格式化的SQL语句)

    "标签"进一步强调了这个工具的关键特性,包括"Java输出漂亮的SQL语句",这意味着它是一个Java环境下的解决方案,能够集成到Java项目中,通过Java代码来调用和实现SQL语句的格式化。另一个标签"SQL格式化"则明确了它...

    Java调用sqlplus执行定制的sql脚本

    本文将深入探讨如何在Java中调用SQL*Plus来执行定制的SQL脚本。 首先,SQL*Plus是Oracle数据库提供的一个命令行工具,用于执行SQL语句和PL/SQL块。在Java中调用SQL*Plus,通常有两种方式:一种是通过操作系统命令行...

    java 调用 powershell 并传参 返回

    java 调用 powershell 并传参 返回

    java调用json参数的webservice

    在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...

    Java调用SQL存储过程详解.docx

    在Java编程中,调用SQL存储过程是数据库操作中的常见任务,这有助于提高应用程序的效率和性能。Java通过`CallableStatement`接口提供了调用存储过程的功能,使其能够适应不同的数据库管理系统(DBMS)。下面将详细...

    java 调用存储过程返回单个值

    本文将详细介绍如何通过Java程序来调用一个返回单个值的存储过程,并且该过程支持参数传递。此方法通常利用了`CallableStatement`接口,它是`PreparedStatement`的子接口,专门用于执行SQL存储过程或函数。 ### 一...

    java调用soap接口案例

    Java调用SOAP(Simple Object Access Protocol)接口是Web服务交互中的常见操作,SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。本案例主要关注如何使用Java来实现SOAP请求并获取响应,具体我们...

    Java中调用SQL Server存储过程详解

    Java中调用SQL Server存储过程是一项常见的任务,特别是在开发企业级应用时,因为存储过程能够封装复杂的数据库逻辑,提高性能并降低网络流量。本篇文章详细介绍了如何通过Java调用SQL Server存储过程,涵盖了几种...

    java调用oracle存储过程或者函数

    在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...

    Java调用SQL Server的存储过程详解

     使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示: {call procedure-name}  作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中...

    SQLServer2008分页存储过程和java调用

    PagingOperation数据库SQLServer2008分页存储过程(和java调用存储过程源代码): 调用存储过程进行分页查询速度快,尤其是数据量超过50万条的表非常重要,此代码是我们项目中使用的,实际使用情况稳定,也希望大家...

    java调用C#封装的dll方法

    ### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式[文].pdf

    Java.util.Date与java.sql.Date的互转及字符串转换为日期时间格式 java.util.Date和java.sql.Date是Java中两个常用的日期时间类,分别属于不同的包。java.util.Date是Java标准库中的日期时间类,而java.sql.Date是...

    Java实现调用MySQL存储过程详解

    在数据库管理中,存储过程(Stored Procedure)是一种预编译的SQL代码集合,它封装了特定的功能,并在需要时由应用程序调用执行。存储过程在大型数据库系统中扮演着重要角色,因为它能提高性能、增强安全性、减少...

    Java调用Bartender Demo.rar

    Bartender提供了.net的开发sdk,但是没有提供java的,使得java开发者调用Bartender实现模板打印比较困难。本示例是结合Bartender官方资料,利用java通过COM组件方式实现可传递参数的模板打印。

Global site tag (gtag.js) - Google Analytics