web-dev-qa-db-ja.com

Java DateをMysql datetimeに保存するには...?

Java DateをMysql datetimeに保存する方法を教えてください。

私がそうしようとすると...日付のみが保存され、時刻はこのようなMysqlの日付ストアに00:00:00のままです...

2009-09-22 00:00:00

日付だけでなく時間も欲しい

2009-09-22 08:08:11

私は春のmydomainクラスでJPA(Hibernate)を使用していますが、Java.util.Dateを使用していますが、手書きのクエリを使用してテーブルを作成しました...

これは私の作成ステートメントです

CREATE TABLE ContactUs (id BIGINT auto_increment, 
                        userName VARCHAR(30), 
                        email VARCHAR(50), 
                        subject VARCHAR(100), 
                        message VARCHAR(1024), 
                        messageType VARCHAR(15), 
                        contactUsTime datetime, 
                        primary key(id))
                        TYPE=InnoDB;
93
Urvish

リンクを参照してください:

http://www.coderanch.com/t/304851/JDBC/Java/Java-date-MySQL-date-conversion

次のコードはちょうど問題を解決しました:

Java.util.Date dt = new Java.util.Date();

Java.text.SimpleDateFormat sdf = 
     new Java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String currentTime = sdf.format(dt);

この 'currentTime'は、型がDateTimeの列に挿入され、成功しました。

152
Haim Evgi

次のように、@Temporal(TemporalType.TIMESTAMP)を使用してフィールド(またはゲッター)に注釈を付けます。

public class MyEntity {
    ...
    @Temporal(TemporalType.TIMESTAMP)
    private Java.util.Date myDate;
    ...
}

これでうまくいくはずです。

84
Pascal Thivent

おそらくJava.sql.Dateを使用していますか?それはJavaクラスとしてミリ秒の粒度を持ちますが(Java.util.Dateのサブクラスであり、設計上の決定が不適切です)、JDBCドライバーによって時間コンポーネントのない日付として解釈されます。代わりにJava.sql.Timestampを使用する必要があります。

37

おそらく、Javaの日付の形式が mysql formatYYYY-MM-DD HH:MM:SS)と異なるためです

これを行う

 DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();
 System.out.println(dateFormat.format(date));
7
Marcx

あなたは2011-07-18 +時間形式を取得します

long timeNow = Calendar.getInstance().getTimeInMillis();
Java.sql.Timestamp ts = new Java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);
5
Anuj

mysql datetime-> GregorianCalendar

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2012-12-13 14:54:30"); // mysql datetime format
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
System.out.println(calendar.getTime());

GregorianCalendar-> mysql datetime

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = format.format(calendar.getTime());
System.out.println(string);
5
Nikopol
Java.util.Date date = new Date();
Object param = new Java.sql.Timestamp(date.getTime());    
preparedStatement.setObject(param);
4
michdraft

次のコードを使用して、日付をMySQLに挿入します。 MySqlの要件を満たすように日付の形式を変更する代わりに、STR_TO_DATE(?, '%l:%i %p')パラメーターを設定することにより、データベースが日付を認識できるようにすることができます。

たとえば、2014-03-12はSTR_TO_DATE('2014-03-12', '%Y-%m-%d')として表すことができます

preparedStatement = connect.prepareStatement("INSERT INTO test.msft VALUES (default, STR_TO_DATE( ?, '%m/%d/%Y'), STR_TO_DATE(?, '%l:%i %p'),?,?,?,?,?)"); 
1
Yang_2333

この回答の条件は非常にシンプルですが、mysqlでは列のデータ型はdatetimeであり、Javaコードからmysqlにデータを送信します。

Java.util.Date dt = new Java.util.Date();
whatever your code object may be。setDateTime(dt);

重要なことは、日付を選択するだけで、その形式はすでにmysql形式に従っており、それを送信することであり、それ以上の変更は必要ありません。

0
Yash Agrawal

私はまだ1行の方法を好む

new Java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())
0
Mohannd

実際、SimpleDateFormatを使用しない場合がありますが、このようなものを使用できます。

  @JsonSerialize(using=JsonDateSerializer.class)
  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
  private Date blkDate;

これにより、指定した形式で日付を直接取得できます。

0
Sahin Yanlık