1. 程式人生 > >Mysql中的date與datetime,以及如何向Mysql中插入“日期+時間”資料

Mysql中的date與datetime,以及如何向Mysql中插入“日期+時間”資料

我們知道,java中有date和datetime,mysql中也有date和datetime,這裡我們來說說mysql中的date和datetime。

1 mysql中的date和datetime

1.1 DATETIME

型別可用於需要同時包含日期和時間資訊的值。MySQL 以:

‘YYYY-MM-DD HH:MM:SS’

格式檢索與顯示 DATETIME 型別。支援的範圍是:

‘1000-01-01 00:00:00’

‘9999-12-31 23:59:59’

(“支援”的含義是,儘管更早的值可能工作,但不能保證他們均可以。)

1.2 DATE

型別可用於需要一個日期值而不需要時間部分時。MySQL 以

‘YYYY-MM-DD’

格式檢索與顯示DATE值。支援的範圍則是

‘1000-01-01’

‘9999-12-31’

2 與java資料的互動

能看出來mysql中的datedatetime區別還是挺大的,date沒有儲存時間。但是java中的datejava.util.Date)記錄的還是挺細的,日期和時間都可以記下來,那麼現在問題來了,如果想在mysql中儲存日期和時間,也就是用datetime,而在資料中應該如何對應呢?

我使用hibernate測了一下,發現當把mysql資料庫中設定了datetime,反向工程生成的hbm.xml檔案中,使用的是timestamp

,如下:

<property name="Publishdate" column="publishdate" type="timestamp" not-null="false" length="10" />

反向生成javapojo時,生成的還是Date

由此可見對於mysqldatetime,與java中的date,如果要使二者正確互動,中間要使用timestamp

如果要在JAVA中直接插入MySqldatetime型別,則可以使用:

Date date = new Date();
Timestamp timeStamp = new Timestamp(date.getTime());

再用setTimestamp()設定資料庫中的“日期+時間”。

這樣放入資料庫的就是“yyyy-mm-dd hh:mm:ss”格式的資料。

注意,mysql中如果使用date而不是datetime是儲存不下“日期+時間”的,只能儲存“時間”