0

MySQL では、適切にフォーマットされた文字列を MySQL データベースの datatime フィールドに挿入できますか?

ファイルを解析し、yyyyMMdd 形式の日付と HHmmss 形式の時刻を組み合わせて、次のような文字列にフォーマットする予定です。

     "yyyy-MM-dd HH:mm:ss"

次に、挿入クエリを使用して、この文字列を日時フィールド (上記の例と同じ形式) に挿入したいと思います。

これが問題を処理する適切な方法でない場合、どの方法を使用すればよいですか? MySQL のドキュメントを見た後、フォーマットが正しい限りこれを行うことができるという印象を受けました。Java の Calendar クラスと Date クラスを操作することは、頭の痛い問題にしか思えませんでした。

4

4 に答える 4

2

これは適切な方法ではありません。適切な方法は、java.sql.Timestamp を使用し、準備済みステートメントを使用して日付を挿入することです。

Date date = dateFormat.parse(s);
Timestamp timestamp = new Timestamp(date.getTime());
String sql = "insert into my_table (id, instant) values(?, ?)";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setLong(1, id);
stmt.setTimestamp(2, timestamp);
stmt.executeUpdate();

これにより、コードが移植可能になり、ロケールやデータベースに縛られなくなります。

于 2012-06-07T18:23:45.497 に答える
1

マニュアルで説明されているように、この種の日時リテラルには、提案されているものを含め、多くの有効な形式があります。

はい、これはあなたが説明したとおりに機能します。ただし、YYYYMMDDHHMMSS直接挿入できるため、追加の書式を追加する必要はないことに注意してください。文字列として引用する必要さえありません。

于 2012-06-07T18:20:42.290 に答える
0

はい、それはうまくいきます。MySQL はこの形式yyyy-MM-dd HH:mm:ssをデフォルトとして使用しますが、前述のように、他の多くの形式を使用できます。

有効な日付を確認したい場合は、その日付に対してべき等操作を実行してみてください。

SELECT 'mydate' + INTERVAL 0 DAY

MySQL が同じものを返す場合、日付は有効です。それ以外の場合、MySQL は NULL を返します。

于 2012-06-07T18:23:54.957 に答える
0

正しくフォーマットされていれば、文字列を使用できます。私は自分のコードでそれを行い、long を DB の所定の形式に変換する TimeUtil クラスを持っています。

次に、次のようなステートメントを単純に使用できます

stat.setString(10, TimeUtil.formatTime(message.submitTime));
于 2012-06-07T18:25:20.243 に答える