java中有date和datetime,mysql中也有date和datetime,這里我們來說說mysql中的date和datetime。
創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元天祝藏族自治做網(wǎng)站,已為上家服務(wù),為天祝藏族自治各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
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ù)的交互
能看出來mysql中的date和datetime區(qū)別還是挺大的,date沒有保存時(shí)間。但是java中的date(java.util.Date)記錄的還是挺細(xì)的,日期和時(shí)間都可以記下來,那么現(xiàn)在問題來了,如果想在mysql中存儲(chǔ)日期和時(shí)間,也就是用datetime,而在數(shù)據(jù)中應(yīng)該如何對應(yīng)呢?
我使用hibernate測了一下,發(fā)現(xiàn)當(dāng)把mysql數(shù)據(jù)庫中設(shè)置了datetime,反向工程生成的hbm.xml文件中,使用的是timestamp,如下:
property name="Publishdate" column="publishdate" type="timestamp" not-null="false" length="10" /1
反向生成java的pojo時(shí),生成的還是Date。
由此可見對于mysql中datetime,與java中的date,如果要使二者正確交互,中間要使用timestamp。
如果要在JAVA中直接插入MySql的datetime類型,則可以使用:
Date date = new Date();
Timestamp timeStamp = new Timestamp(date.getTime());12
再用setTimestamp()設(shè)置數(shù)據(jù)庫中的“日期+時(shí)間”。
這樣放入數(shù)據(jù)庫的就是“yyyy-mm-dd hh:mm:ss”格式的數(shù)據(jù)。
注意,mysql中如果使用date而不是datetime是保存不下“日期+時(shí)間”的,只能保存“時(shí)間”。
mysql有豐富的時(shí)間函數(shù):
ADDTIME (date2 ,time_interval ) //將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉(zhuǎn)換時(shí)區(qū)
CURRENT_DATE ( ) //當(dāng)前日期
CURRENT_TIME ( ) //當(dāng)前時(shí)間
CURRENT_TIMESTAMP ( ) //當(dāng)前時(shí)間戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或時(shí)間
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式顯示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上減去一個(gè)時(shí)間
DATEDIFF (date1 ,date2 ) //兩個(gè)日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1為星期天
DAYOFYEAR (date ) //一年中的第幾天
EXTRACT (interval_name FROM date ) //從date中提取日期的指定部分
MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串
MAKETIME (hour ,minute ,second ) //生成時(shí)間串
MONTHNAME (date ) //英文月份名
NOW ( ) //當(dāng)前時(shí)間
SEC_TO_TIME (seconds ) //秒數(shù)轉(zhuǎn)成時(shí)間
STR_TO_DATE (string ,format ) //字串轉(zhuǎn)成時(shí)間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 ) //兩個(gè)時(shí)間差
TIME_TO_SEC (time ) //時(shí)間轉(zhuǎn)秒數(shù)]
WEEK (date_time [,start_of_week ]) //第幾周
YEAR (datetime ) //年份
DAYOFMONTH(datetime) //月的第幾天
HOUR(datetime) //小時(shí)
LAST_DAY(date) //date的月的最后日期
MICROSECOND(datetime) //微秒
MONTH(datetime) //月
MINUTE(datetime) //分返回符號,正負(fù)或0
SQRT(number2) //開平方
以上函數(shù)僅供參考,詳細(xì)的可以查看雷雪松的博客。
通過sql語句查詢下 看看現(xiàn)在的值
show variables like '%date%';
默認(rèn)的值是:
date_format= %Y-%m-%d
datetime_format=%Y-%m-%d %H:%i:%s
然后在mysql的配置文件my.cnf 或者 my.ini中 加入
[mysqld]
date_format= %Y/%m/%d
datetime_format=%Y/%m/%d %H:%i:%s
最后mysql服務(wù)器重啟即可。