0

以下のコードを入力しました。私の目標は、日付を dd/MM/yyyy 形式で mySQL に保存することです。ただし、mySQL は一般に yyyy/MM/dd を使用します。

    String d=(((JTextField)jDateChooser1.getDateEditor().getUiComponent()).getText()); 
    Statement stmt = db.conn.createStatement(); 
    String sql = "insert into diag.current " +     
                 "values'"+col1+"','"+col2+"','"+java.sql.Date.valueOf(d)+"','"+col4+"')";    
    stmt.executeUpdate(sql);

jDateChooser1 を右クリックし、[カスタマイズされたコード] をクリックして、次のように入力しました。

jDateChooser1= new com.toedter.calendar.JDateChooser("dd/MM/yyyy","##/##/####",'_');

今、私が間違いを犯している場所を教えてください。誰かがこれを解決したら、私は感謝します。前もって感謝します。くっきり描かれているといいのですが…

4

3 に答える 3

0

MySQL マニュアル - 11.3.1 から。DATE、DATETIME、および TIMESTAMP 型

DATE 型は、日付部分があり時刻部分がない値に使用されます。MySQL は DATE 値を「YYYY-MM-DD」形式で取得して表示します。サポートされている範囲は「1000-01-01」から「9999-12-31」です。

DATETIME 型は、日付と時刻の両方の部分を含む値に使用されます。MySQL は、DATETIME 値を「YYYY-MM-DD HH:MM:SS」形式で取得して表示します。サポートされている範囲は「1000-01-01 00:00:00」から「9999-12-31 23:59:59」です。

TIMESTAMP データ型は、日付部分と時刻部分の両方を含む値に使用されます。TIMESTAMP の範囲は、「1970-01-01 00:00:01」UTC から「2038-01-19 03:14:07」UTC です。

MySQL は、保存のために TIMESTAMP 値を現在のタイム ゾーンから UTC に変換し、取得のために UTC から現在のタイム ゾーンに戻します。(これは、DATETIME などの他のタイプでは発生しません。) デフォルトでは、各接続の現在のタイム ゾーンはサーバーの時間です。

MySQL は、文字列として指定された値の「緩和された」形式を許可します。この形式では、日付部分または時間部分の間の区切り文字として任意の句読点を使用できます。たとえば、YYYY/MM/DD は DATE として受け入れられます。

そのため、MySQL に日付を挿入するには、YYYY-MM-DD 形式でテキスト日付を作成する必要があるようです。DATE フィールドを取得すると、YYY-MM-DD が取得されます。

setDate メソッドを使用すると、PreparedStatement が java.sql.Date からこの変換を行うことになっています。

于 2013-07-23T12:49:30.607 に答える
0
dateChooserDialog1.showDialog(this.getFrame());
Calendar d=dateChooserDialog1.getSelectedDate();

SimpleDateFormat sdf=new SimpleDateFormat("DD-MM-YYYY");
String s=d.toString();
String dd=s;
String mm=s;
String yyyy=s;
int i=dd.lastIndexOf("DAY_OF_MONTH");
dd=dd.substring(i+13,i+16);
dd=dd.substring(0,dd.lastIndexOf(","));

int j=mm.indexOf("MONTH");
mm=mm.substring(j+6,j+9);
mm=mm.substring(0,mm.lastIndexOf(","));
j=Integer.parseInt(mm);
mm=String.valueOf(j+1);

int z=yyyy.indexOf("YEAR");
yyyy=yyyy.substring(z+5,z+10);
yyyy=yyyy.substring(0,yyyy.lastIndexOf(","));

//s.substring(busyIconIndex, busyIconIndex);

String dob=dd+"/"+mm+"/"+yyyy;
DateField.setText(dd+"/"+mm+"/"+yyyy);
于 2014-07-16T05:02:39.953 に答える