2013-03-20 222 views
3

我需要在MySQL中插入當前日期和時間(毫秒)。我做了以下幾點:如何在Java中使用Java插入當前時間

long time = System.currentTimeMillis(); 
java.sql.Timestamp timestamp = new java.sql.Timestamp(time); 
System.out.println("Time in milliseconds :" + timestamp); 

我正確的得到了毫秒數的時間(例如2013-03-21 00:08:33.523)。不過,我需要將這些信息插入到MySQL數據庫中。我嘗試使用PreparedStatement

prepStmt.setTimestamp(2,timestamp); 

以下但時間被插入而不毫秒(例如2013年3月21日0點08分33秒)。

如何插入毫秒的時間。

編輯:數據庫中的列是DATETIME類型。

+0

@PermGenError你知道時間戳第二基於對不對? – ITroubs 2013-03-20 21:12:36

+0

退房'FROM_UNIXTIME()' – 2013-03-20 21:13:37

+2

我不認爲Datetime支持毫秒! – ITroubs 2013-03-20 21:13:38

回答

7
java.util.Date date = new java.util.Date(); 
java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime()); 
preparedStatement.setTimestamp(1, timestamp); 
1

它是DATETIME類型的列,它使用PreparedStatement的setDate方法。

java.sql.Date date = new java.sql.Date(System.currentTimeMillis()); 
stmnt.setDate(1, date); 
+0

不正確,因爲我插入的變量是Timestamp類型。 – user2192774 2013-03-20 21:20:16

+1

我有兩個問題。首先,它將時間插入:00:00:00。其次,它沒有以毫秒爲單位的時間。 – user2192774 2013-03-20 21:24:16

+0

你是對的。日期實際上是零小時,分鐘等等。你使用的是什麼版本的MySQL? DATETIME字段僅支持自版本5.6.4以來的小數秒 – Ozzie 2013-03-20 21:25:08

0

由於問題已被其他成員正確回答,讓我加入一些關於日期類型在數據庫中的存儲的個人後見之明。

在個人層面上,我更喜歡以長格式存儲日期信息。之後我發現它更容易儲存和使用。不僅大多數語言都提供了創建具有長參數的新日期,但您不會被預設格式卡住,您將有機會以不同的格式對其進行格式化。例如,我必須在我開發的某個網站上將日期格式設置爲英文或法文格式,如果使用某種語言參數,則可以更容易地使用if-else,並根據語言偏好應用給定的格式。

但是,這種方法有一些缺點。您需要將其格式化爲可讀格式,例如,由不會使用Java格式化的查詢完成的自動報告。

-----------------------------ADD CODE----------------------------- 

    // Stored as 0 if the date is not initialised 
    long time = objInscription.getDatePremierVisionnement() != null ? 
     objInscription.getDatePremierVisionnement().getTime() : 0; 

-------------------------------GET CODE---------------------------- 
    // long is store as 0 if the date has not been initialised   
    long long = rs.rsReadColumnLong(1); 
    if (long == 0) { 
     someobj.setSomeDate(null); 
    } else { 
     someobj.setSomeDate(new Date(long)); 
    } 

您將可以輕鬆使用SimpleFormat來顯示您的數據。

+1

這只是額外的工作。當從Java數據庫中提取日期時,您可以將其作爲Date對象進行檢索,那麼爲什麼還要自己去做。我認爲大多數其他語言直接從查詢結果中支持Date對象 – Ozzie 2013-03-20 21:33:09

+0

我有一些問題使這項工作。我確信做錯了事,但另一方面,我做了足夠好的事情。我會在下次與某個日期合作時記住這一點。也許這是因爲我使用了錯誤的MySQL數據類型。 – 2013-03-21 01:07:02

0

您可以創建一個方法getCurrentTimeStamp()和JDBC聲明

了PreparedStatement.setTimestamp稱之爲(4 getCurrentTimeStamp());

方法:

私有靜態的java.sql.Timestamp getCurrentTimeStamp(){

java.util.Date today = new java.util.Date(); 
return new java.sql.Timestamp(today.getTime()); 

}

相關問題