2

java.sql.PreparedStatement#setDatedateTime の mysql 列が常に2012-10-16 00:00:00 Time 情報なしのように Date 形式になるのはなぜですか? 私はこのようなループで日付を格納しています:

protected Date getIncrementedDateTime() {
    additionalTime += 1000;
    return new Date(System.currentTimeMillis() + additionalTime);
}


preparedStatement.setDate(j, new java.sql.Date(getIncrementedDateTime().getTime());

値をデバッグしましたが、mysql データベースには常に 2012-10-16 00:00:00 の値があります。

4

3 に答える 3

3

のドキュメントに従ってjava.sql.Date

JDBC がミリ秒値を SQL DATE 値として識別できるようにする、ミリ秒値の薄いラッパー。[...]

SQL DATE の定義に準拠するには、java.sql.Date インスタンスによってラップされるミリ秒値は、インスタンスが関連付けられている特定のタイム ゾーンで時、分、秒、およびミリ秒をゼロに設定することによって「正規化」する必要があります。 .

基本的に、日時列の場合は、おそらく別のタイプを使用する必要がありますTimestamp。(それは他の点では理想的ではありませんが、より適している可能性があります...)

于 2012-10-16T15:41:06.537 に答える
0

java.sql.Date は単なる日付であり、時間ではありません。時刻情報を含む java.util.Date と混同しないでください。java.sql.Timestamp を参照してください。

于 2012-10-16T15:41:15.943 に答える
0

これは、テーブルの列のデータ型に基づいています。TimeStampまたはTimeデータベースサーバーに応じて使用してみてください。

于 2012-10-16T15:44:12.987 に答える