[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 965
  • Last Modified:

Question about ResultSet.getString(String columnName)

Hi, experts,
 
I have a sql select sentence:
    select to_char(sysdate, 'FMMonth DD, YYYY') today_month_dd_yyyy from dual
The result is
    'September 28, 2004'

But when I use java.sql.ResultSet (in a server application in Weblogic812) to get the today_month_dd_yyyy value, the java code:
    rset.getString("today_month_dd_yyyy");
always return
    9? 28, 2004

Why? Can someone help me to fix this.

Thanks in advance.
0
acanuva
Asked:
acanuva
1 Solution
 
Giant2Commented:
why you not use Calendar.getInstance() instead?
0
 
zzynxSoftware engineerCommented:
What's the column type in your database? Is the date stored as a string or a date?
0
 
zzynxSoftware engineerCommented:
Do you really simply want the current day?
What about:
System.out.println( (new SimpleDateFormat("MMMM DD, yyyy")).format(new Date()) );
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
MogalManicCommented:
Just leave the DB column as date and format it on the java side.
EX.
  select SYSDATE "txnDate" from dual
...

  SimpleDateFormat format=new SimpleDateFormat("MMMMM dd, yyyy");
  Date dt=rs.getTimestamp("txnDate");
  String dateStr=format.format(dt);
0
 
Venci75Commented:
What happens if you first change the language of your session:
ALTER SESSION SET NLS_LANGUAGE = 'laguage'
0
 
KartikShahCommented:
One question, are you using the native drivers provided by oracle or the ones supplied by Weblogic. the reason is that since you are doing a to_char, it should not matter to driver to display text as date. Try using this query and see thats the result:

select to_char(sysdate, '/YYYY\DD/FMMonth\') today_month_dd_yyyy from dual

and if in the java code, you get a result like:

/2004\28/September\

then there might be a problem with the driver you are using, as it might be trying to be intelligent to display the date in numericals instead of plain text.

If this works, then I suggest using the latest oracle db drivers, and verify if the issues gets resolved or no

Kartik
0
 
acanuvaAuthor Commented:
Thanks very much for all answers.

Actually, I simplified my problem to get a quick answer. Let me describe it with more details.

I use jdbc to call a stored procedure which returns a ResultSet (in stored procedure, a cursor), one of the columns of the ResultSet is named 'today_month_dd_yyyy'. The definition of this column is something like:
   
    OPEN xx_cursor FOR
        SELECT DISTINCT to_char(sysdate, 'MM/DD/YYYY  HH:MI:SS A.M.') print_time,
               to_char(sysdate, 'FMMonth DD, YYYY') today_month_dd_yyyy,
               to_char(sysdate, 'MM/DD/YYYY') today_mm_dd_yyyy
                                   ......
        FROM    ......
        WHERE    ........
                   
After getting the ResultSet, I use rset.getString(columnName) to get the value of 'today_month_dd_yyyy' column. I cann't change the sql because this stored procedure is also used by other programs.

Then, comes the problem. When I test
    select to_char(sysdate, 'FMMonth DD, YYYY') today_month_dd_yyyy from dual
The result is
    'September 28, 2004'

But in java:
    rset.getString("today_month_dd_yyyy");
I got
    9? 28, 2004

Thanks
Acanuva
0
 
Giant2Commented:
You close the question, so I believe you solved your problem. Isn't it?
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now