2012-01-31 10 views
0

クエリから2つの値(日付)を比較する必要があります。日付にNull値を渡すことができません

String myFormatString = "yyyyMMdd"; 
SimpleDateFormat df = new SimpleDateFormat(myFormatString); 

(クエリ)

Date date1 = df.parse(rs.getString(8)); 
Date date2= df.parse(rs.getString(9)); 

実際に私は、クエリから必要と 日付1とdate2の中を通過することができます値(日付)を取得することができます。しかし、私がdate2のデータベースからnull値を取得した場合、 'NullPointerException'エラーが発生しました。私は日付1と日付2を比較する必要があり、次に は報告するより大きな日付を設定します。何か案が?


親愛なる皆さん、アドバイスをいただきありがとうございます。それは本当に私にとって有益です。最後に私は解決する方法を見つけました。

try { 
     Date date1 = df.parse(rs.getString(8)); 
     Date date2 = df.parse(rs.getString(9)); 
     if(date1.compareTo(date2) > 0) 
     { Date = rs.getString(8); 
     } 
     else if(date1.compareTo(date2) < 0) 
     { 
      Date = rs.getString(9); 
      } 
      else 
      { 
     Date = rs.getString(8); 
      } 


     } catch (NullPointerException ex) { 
     Date=rs.getString(8); 
     } 
+0

「yyyy-MM-dd」のような日付形式ではいけませんか? – Lion

答えて

0

Dateオブジェクトがnullコンストラクタを受け入れない、日付文字列がnullであるかどうかを確認してください。一時変数を最初に作成し、それらがヌルでないことを確認する必要があるかもしれません。これらのうちの1つがnullの場合、他の人がより大きいと言うことができるかもしれません(それはあなたのビジネスロジックが&であると予想していますか?)。

Date date1 = null; 
if((rs.getString(8)!=null) && (!"".equals(rs.getString(8)))) 
{  
date1 = df.parse(rs.getString(8)); 
} 

Date date2 = null; 
if((rs.getString(9)!=null) && (!"".equals(rs.getString(9)))) 
{  
date2 = df.parse(rs.getString(9)); 
} 

次に、日付の比較を行います。& date2。

+0

ご協力いただきありがとうございます。私が比較すると、NullPointerExceptionエラーも発生します。 if(date1.compareTo(date2)> 0)\t \t \t \t \t System.out.println( "2番目の日付は最初の日付の前に初期化されます"); (date1.compareTo(日付2)が<0) \t \t \t \t \tのSystem.out.println( "第二日は、まず日後に初期化されている")場合は、他の \t \t \t \t \t。他 \t \t \t \t \t \t \t \t \t \tのSystem.out.println( "第一日と二日が等しいです");どうすればいい? – Bella

+0

私のコードを編集しました。それを試してみて!シンボルが内部にあるはずです。ブロックが実行されないと思われるからです。 – kosa

+0

本当にありがとう。 – Bella

1

解析する前に、

Date date1 = null; 
Date date2 = null; 
if((rs.getString(8)!=null) && !(rs.getString(8).equals(""))){ 
    date1 = df.parse(rs.getString(8)); 
} 

if((rs.getString(9)!=null) && !(rs.getString(9).equals(""))){ 
    date2 = df.parse(rs.getString(9)); 
} 
1

あなたのデータは、データベースがdate2ためnullを返す場合があるようなものであるならば、それは例外処理を使用することをお勧めのようになります。あなたは日のためにNULL値を入れることができません

try { 
    Date date1 = df.parse(rs.getString(8)); 
    Date date2 = df.parse(rs.getString(9)); 
    ... 
} catch (NullPointerException ex) { 
    // Do something/nothing if date2 is null 
} 
+0

Dawoodさん、ありがとうございます。 – Bella

+0

あなたは大歓迎です! – Dawood

0

オブジェクト。 dateにnull値を渡すと、Dateを比較することはできません。この場合、例外を処理する必要があります。

Date yourReportDate = new Date(); 

    try { 
     Date date1 = df.parse(rs.getString(8); 
     Date date2 = df.parse(rs.getString(9); 

     if(date1.getTime()>date2.getTime()) 
     { 
      yourReportDate.setTime(date1.getTime()); 
     }else 
     { 
      yourReportDate.setTime(date2.getTime()); 
     } 
    } catch (Exception e) {   
     e.printStackTrace(); 
    } 
関連する問題