2012-01-19 4 views
1

データベースにDateTimeという日付を保存するフィールドがあります。そのフォーマットをdd-MM-yyyyに変更したいと思います。ここに私の現在のJava/JSPコードがありますが、例外を返しています:SQL DateTimeをJavaに変換

DateFormat formatter ; 
Date date; 
formatter = new SimpleDateFormat("dd-MMM-yy"); 
date = (Date) formatter.parse(rs.getString("play_date")); //rs -> ResultSet 
//print date... 

日付を取得する最も良い方法は何ですか?

+0

dd-MMM-yyではなく、mysqlの日付/時刻形式は 'YYYY-MM-DD hh:mm:ss'です。 –

+0

Javaの厄介なビルトイン日付/時刻関数の代わりにJodaTimeライブラリを使用すれば、何の問題もありません。 – cdeszaq

+0

dd-MM-yyyy形式で印刷するか、データベースに保存されている形式を変更しますか? – eis

答えて

2

rs.getDate("play_date") 

あなたのコラムplay_date以降は、データベース内のDATE_TIMEです。パースする必要はありません。 dd-MM-yyyy形式で時刻を直接表示することができますDateFormat#format(date)

0

列の時刻がDATETIMEであり、SQLが列の値を文字列に明示的に変換せずに取得している場合は、getDate(String)のResultSetメソッドを使用できます。 rs.getString("play_date")あなたが行う必要があります:代わりの

date = rs.getDate("play_date"); 
0

データベースの日付/時刻フィールドの値がある場合は、文字列の変換をまったく実行しないでください。 getStringの代わりにResultSet.getDateを使用してください。ほとんどである必要があります。常には不要な変換を避ける必要があります。彼らは災害のレシピです。

結局のところ、は本来ではありません。なぜなら、データベース設定の変更に直面してコードを脆弱にしたいのであれば、そのデータを自然に得ることができます表現?文字列に値を変換することを避けるために、パラメータ値を使用します(ともな値のためのSQLインジェクションを防ぐために - あなたはデータベース(いずれかの更新/挿入やクエリパラメータなど)へデータを提供とき

も同様ですすでに弦)。

0

私はあなたがそれはおそらく唯一の2のMさんと

formatter = new SimpleDateFormat("dd-MM-yy"); 

でなければなりません

formatter = new SimpleDateFormat("dd-MMM-yy"); 

でミスをしたと思います。

関連する問題