2016-03-03 64 views
0

你好,我正在定義一個變量,我想要股票日期時間輸入。
我給這個變量的格式是yyyy-mm-dd hh:MM。 但在數據庫中它一直顯示我只有這個格式yyyy-mm-dd沒有hh:MM
代碼Java日期時間查看

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-mm-dd hh:MM"); 
        java.util.Date date = sdf1.parse(rs.getString("dateMaint")); 
        java.sql.Date sqlStartDate = new Date(date.getTime()); 
        mc.setDateMaint(sqlStartDate); 
+0

小'M'代表分鐘,同時'M'代表月...您必須在代碼中切換它們 –

+1

另外,java.sql.Date沒有時間部分。所以這並不奇怪。使用時間戳。當然,爲數據庫列選擇適當的類型。 –

+0

非常感謝您的回覆。你有什麼建議使用Timestamp? – user3816341

回答

0
public static java.sql.Timestamp convertToSqlDateTime(Date utilDate){ 
     return new java.sql.Timestamp(utilDate.getTime()); 
} 

通常情況下,只有java.sql.Date返回一個日期,只值和時間將被丟棄。所以,爲了節省時間,必須使用java.sql.TimeStamp

時間戳使用毫秒時間值構造一個Timestamp對象。積分秒存儲在基礎日期值中;小數秒存儲在Timestamp對象的nanos字段中。

爲此,utilDate.getTime()用於返回毫秒數,因爲此日期對象表示January 1, 1970, 00:00:00 GMT

欲瞭解更多信息鏈接:Source

+0

java.sql.date確實可以處理高達毫秒的精度,請參閱:https://docs.oracle.com/javase/8/docs/api/java/sql/Date.html但是,您說的正確的是實施日期,時間,日期時間因數據庫供應商而異。 –

+1

@GeeBee閱讀javadoc:*要符合SQL DATE的定義,由java.sql.Date實例包裝的毫秒值必須通過將小時,分鐘,秒和毫秒設置爲零來「標準化」與實例關聯的時區*。 –

+0

Javadoc還說:* public void setTime(long date) 使用給定的毫秒** time **值設置一個現有的Date對象。如果給定的毫秒值包含**時間信息**,則驅動程序會將時間組件設置爲與零GMT相對應的默認時區(運行應用程序的Java虛擬機的時區)中的時間。* –