1

標的:

  1. dd/MM/yyyy日付をデータベースにフォーマットで保存したい。

  2. 私は最初にそれを使用してフォーマットしましたが、DateFormatその結果、データ型に変更されString、次に関数を使用して日付データ型に変換しようとしましたが、 ie形式to_dateで保存されます。19-DEC-12dd-MON-yy

コード:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
java.util.Date dob=JDateChooser.getDate();  
java.sql.Date dobloc=new java.sql.Date(dob.getTime()); 
String dobloc1=df.format(dobloc);   
String sql="INSERT INTO ADMIN.DEPARTMENT(date_of_birth) VALUES (to_date(?,'dd/MM/yyyy'))"
PreparedStatement pst = conn.prepareStatement(sql);  
pst.setString(1, dobloc1);          
4

2 に答える 2

2

日付は、データベースで指定した形式で保持されません (文字列フィールドを使用しない限り) ほとんどのデータベース システムは、日時の値を「倍精度」値として格納します。

日付をデータベースに入れ、データベースからデータを取得するとき、またはユーザーに提示するときのフォーマットについて心配する必要があります。

于 2012-12-28T15:33:40.020 に答える
1

Oracleで日付が実際にどのように機能するかを誤解していると思います。
日付は「19-DEC-12」や「19/12/2012」のように保存されず、7 バイトとして保存されます。

詳しくはこちらをご覧ください。

日付列を選択すると、NLS_DATE_FORMAT を使用してフォーマットされます。これは、これらの 7 バイトをフォーマットするために使用されるデフォルトのマスクです。

もちろんto_char(sysdate,'YYYY MM DD')、デフォルトの NLS_DATE_FORMAT のようなカスタム フォーマット マスクを使用する場合は無視されます。

上記のコメントを読んだように

実際、JTableを使用してデータベーステーブルの純粋なコピーを他のフォームに表示しているため、正しい形式で保存しようとしているため、日付が保存されている日付形式が直接表示されます。多数の Jtables で日付形式を変換したくないため、テーブルが増加するにつれて日付形式を何度も変更する必要が生じる可能性があります

DB テーブルの別の列に日付をフォーマットするために使用される特定のフォーマット マスクも保存することをお勧めします。JTable に日付を表​​示する前に、 を使用してこのマスクでフォーマットしますDateFormat

于 2012-12-28T15:45:23.390 に答える