java中有date和datetime,mysql中也有date和datetime,這里我們來(lái)說(shuō)說(shuō)mysql中的date和datetime。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、阿爾山網(wǎng)站維護(hù)、網(wǎng)站推廣。
1 mysql中的date和datetime
1.1 DATETIME
類型可用于需要同時(shí)包含日期和時(shí)間信息的值。MySQL 以:
‘YYYY-MM-DD HH:MM:SS’
格式檢索與顯示 DATETIME 類型。支持的范圍是:
‘1000-01-01 00:00:00’
到
‘9999-12-31 23:59:59’。
(“支持”的含義是,盡管更早的值可能工作,但不能保證他們均可以。)
1.2 DATE
類型可用于需要一個(gè)日期值而不需要時(shí)間部分時(shí)。MySQL 以
‘YYYY-MM-DD’
格式檢索與顯示DATE值。支持的范圍則是
‘1000-01-01’
到
‘9999-12-31’。
2 與java數(shù)據(jù)的交互
能看出來(lái)mysql中的date和datetime區(qū)別還是挺大的,date沒(méi)有保存時(shí)間。但是java中的date(java.util.Date)記錄的還是挺細(xì)的,日期和時(shí)間都可以記下來(lái),那么現(xiàn)在問(wèn)題來(lái)了,如果想在mysql中存儲(chǔ)日期和時(shí)間,也就是用datetime,而在數(shù)據(jù)中應(yīng)該如何對(duì)應(yīng)呢?
我使用hibernate測(cè)了一下,發(fā)現(xiàn)當(dāng)把mysql數(shù)據(jù)庫(kù)中設(shè)置了datetime,反向工程生成的hbm.xml文件中,使用的是timestamp,如下:
property name="Publishdate" column="publishdate" type="timestamp" not-null="false" length="10" /1
反向生成java的pojo時(shí),生成的還是Date。
由此可見(jiàn)對(duì)于mysql中datetime,與java中的date,如果要使二者正確交互,中間要使用timestamp。
如果要在JAVA中直接插入MySql的datetime類型,則可以使用:
Date date = new Date();
Timestamp timeStamp = new Timestamp(date.getTime());12
再用setTimestamp()設(shè)置數(shù)據(jù)庫(kù)中的“日期+時(shí)間”。
這樣放入數(shù)據(jù)庫(kù)的就是“yyyy-mm-dd hh:mm:ss”格式的數(shù)據(jù)。
注意,mysql中如果使用date而不是datetime是保存不下“日期+時(shí)間”的,只能保存“時(shí)間”。
CREATE TABLE borrow (
rid VARCHAR(50) NOT NULL PRIMARY KEY,
bid VARCHAR(50) NOT NULL,
lendDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '借書日期為當(dāng)前日期',
willDate DATE DEFAULT DATE_ADD(lendDate,INTERVAL 30 DAY) not NULL COMMENT '設(shè)定最遲還書日期為借書日期后30天',
returnDate DATETIME
);
1.MyBatis3做數(shù)據(jù)持久層,在字段中有Date和DateTime類型,在插入數(shù)據(jù)時(shí)只要將實(shí)體的屬性設(shè)置成Timestamp就會(huì)對(duì)應(yīng)mysql的DateTime類型,Date會(huì)對(duì)應(yīng)mysql的Date類型。
2.在MyBatis映射文件中要表明映射類型。
result column="modified_date" jdbcType="TIMESTAMP" property="modifiedDate" javaType="java.sql.Timestamp" /
result column="create_date" jdbcType="DATE" property="createDate" javaType="java.util.Date" /
result column="date" jdbcType="TIMESTAMP" property="date" javaType="java.util.Date" /
3.在插入語(yǔ)句的那個(gè)mybatis XML文件在使用字段的時(shí)候也要標(biāo)明類型,注意得用#{},別用${}
#{modifiedDate, jdbcType=TIMESTAMP}
#{createDate, jdbcType=DATE}。