1

もう長い間検索しましたが、答えが見つかりません。私の質問は簡単です...

Javaを使用して日付形式のSQLデータベースに今日の日付を挿入するにはどうすればよいですか? ここにコードがあります。(時間と日付は現在nullです。現在の時間と今日の日付を取得するにはどうすればよいですか)

    String timeNow = null;
    DateFormat dateNow = null;       

    String sql = "INSERT INTO fys.`luggage` (customer_id, description, location, date, time, is_lost, is_handled) VALUES ('"
            + customerId + "', '" + description + "', '" + location + "', '" 
            + dateNow + "', '" + timeNow + "', '" + isLost 
            + "', '" + isHandled + "')";
    db.insertQuery(sql);
}
4

2 に答える 2

2

日付は文字列ではなく日付です

日時の文字列を作成したいようです。必要はありません。JDBC は、java.util.Dateの薄いラッパーであるJava データ型java.sql.Dateを認識します。

Java の Datetimeまたはこの java2s.com チュートリアルの別の質問の例を参照してください。

Joda-Time

ちなみに、 Joda -Timeを使えば、org.joda.time.DateTime と java.util.Date の間で簡単に変換できます。DateTimeクラスのtoDate()メソッドを呼び出します。

Java 8 の JSR 310

将来、Java 8 には、JSR 310 で定義された java.time.* クラスの新しいセットが含まれます。Date and Time APIは、悪名高い java.util.Date/Calendar クラスに取って代わります。これらのクラスは Joda-Time に触発されていますが、完全に再設計されています。

ISO 8601 文字列形式

本当に日時を文字列として渡したい場合は、データベースで認識される形式を使用してください。たとえば、Postgres はISO 8601形式などを受け入れます。Postgres docのDate/Time Typesページの「Date/Time Input」セクションを参照してください。

サーバーに日時を設定させる

一般に、プログラミング言語を使用するよりも、データベース エンジンに日時を挿入させる方が適切です。ほとんどのデータベース システムには、現在の日時を生成するために呼び出すことができるさまざまな関数があります。SQL 標準では、そのような関数がいくつか指定されていますが、通常、データベース システムはさらにさまざまな関数を提供します。

たとえば、Postgres 9には、現在の日時を取得する方法がいくつか用意されています。

ドキュメントをよく読んでください。たとえば、Postgres では、トランザクションが開始された時点の日時を取得するか、日時関数が実行された時点 (トランザクションの開始より後) を取得するかを選択できます。transaction-start-time は、その時間を複数のレコードに記録していて、それらをすべて同じ時間値で一致させたい場合に便利です。

于 2013-11-12T23:29:46.067 に答える