JDBC呼び出しの準備済みステートメントに現在の日付を追加する必要があります。 yyyy/MM/dd
のような形式で日付を追加する必要があります。
やってみた
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date date = new Date();
pstm.setDate(6, (Java.sql.Date) date);
しかし、私はこのエラーがあります:
threw exception
Java.lang.ClassCastException: Java.util.Date cannot be cast to Java.sql.Date
同じ形式でJava.sql.Date
オブジェクトを取得する方法はありますか?
Java.util.Date
はJava.sql.Date
ではありません。それは逆です。 Java.sql.Date
はJava.util.Date
です。
Java.sql.Date
が提供できる コンストラクターlong
を取る を使用して、Java.util.Date
に変換する必要があります。
Java.sql.Date sqlDate = new Java.sql.Date(utilDate.getTime());
単純に1行で:
Java.sql.Date date = new Java.sql.Date(Calendar.getInstance().getTime().getTime());
new Java.sql.Date(Calendar.getInstance().getTimeInMillis());
これらはすべて長すぎます。
使用するだけ:
new Date(System.currentTimeMillis())
します:new Date(Instant.now().toEpochMilli())
myPreparedStatement.setObject( // Directly exchange Java.time objects with database without the troublesome old Java.sql.* classes.
… ,
LocalDate.parse( // Parse string as a `LocalDate` date-only value.
"2018-01-23" // Input string that complies with standard ISO 8601 formatting.
)
)
最新のアプローチでは、Java.util.Date
やJava.sql.Date
などの面倒な古いレガシークラスに取って代わるJava.timeクラスを使用します。
日付のみの値の場合は、LocalDate
を使用します。 LocalDate
クラスは、時刻およびタイムゾーンのない日付のみの値を表します。
Java.timeクラスは、文字列の解析/生成時に標準形式を使用します。したがって、フォーマットパターンを指定する必要はありません。
LocalDate ld = LocalDate.parse( input ) ;
JDBC 4.2 以降に準拠する JDBCドライバー を使用して、Java.timeオブジェクトをデータベースと直接交換できます。 Java.sql。*クラスの内外での変換について忘れることができます。
myPreparedStatement.setObject( … , ld ) ;
検索:
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
Java.time フレームワークは、Java 8以降に組み込まれています。これらのクラスは、 Java.util.Date
、 Calendar
、および SimpleDateFormat
などの厄介な古い レガシー 日時クラスに取って代わります。
メンテナンスモード になった Joda-Time プロジェクトは、 Java.time クラスへの移行を推奨しています。
詳細については、 Oracle Tutorial を参照してください。また、多くの例と説明についてはStack Overflowを検索してください。仕様は JSR 31 です。
Java.timeクラスはどこで入手できますか?
ThreeTen-Extra プロジェクトは、追加のクラスでJava.timeを拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある証明の場です。 Interval
、 YearWeek
、 YearQuarter
、および more などの便利なクラスがあります。
あなたがしなければならないのはこれだけです
Calendar currenttime = Calendar.getInstance(); //creates the Calendar object of the current time
Date sqldate = new Date((currenttime.getTime()).getTime()); //creates the sql Date of the above created object
pstm.setDate(6, (Java.sql.Date) date); //assign it to the prepared statement (pstm in this case)
以下の方法で目標を達成できます:-
long millis=System.currentTimeMillis();
Java.sql.Date date=new Java.sql.Date(millis);
または
// create a Java calendar instance
Calendar calendar = Calendar.getInstance();
// get a Java date (Java.util.Date) from the Calendar instance.
// this Java date will represent the current date, or "now".
Java.util.Date currentDate = calendar.getTime();
// now, create a Java.sql.Date from the Java.util.Date
Java.sql.Date date = new Java.sql.Date(currentDate.getTime());