mysql有豐富的時間函數(shù):
成都創(chuàng)新互聯(lián)公司專注于南江企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站建設(shè)。南江網(wǎng)站建設(shè)公司,為南江等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站設(shè)計,專業(yè)設(shè)計,全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
ADDTIME (date2 ,time_interval ) //將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉(zhuǎn)換時區(qū)
CURRENT_DATE ( ) //當(dāng)前日期
CURRENT_TIME ( ) //當(dāng)前時間
CURRENT_TIMESTAMP ( ) //當(dāng)前時間戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或時間
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式顯示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上減去一個時間
DATEDIFF (date1 ,date2 ) //兩個日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1為星期天
DAYOFYEAR (date ) //一年中的第幾天
EXTRACT (interval_name FROM date ) //從date中提取日期的指定部分
MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串
MAKETIME (hour ,minute ,second ) //生成時間串
MONTHNAME (date ) //英文月份名
NOW ( ) //當(dāng)前時間
SEC_TO_TIME (seconds ) //秒數(shù)轉(zhuǎn)成時間
STR_TO_DATE (string ,format ) //字串轉(zhuǎn)成時間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 ) //兩個時間差
TIME_TO_SEC (time ) //時間轉(zhuǎn)秒數(shù)]
WEEK (date_time [,start_of_week ]) //第幾周
YEAR (datetime ) //年份
首先,mysql中是沒有select current_time這么一說的(select是用來查詢有結(jié)果返回的表達(dá)式),select要么調(diào)用函數(shù)如select current_time(),或者說從數(shù)據(jù)表查詢數(shù)據(jù) select current_time from table。
其次,要注意mysql中對應(yīng)的時間日期格式類型,也就是UPDATE_DATE的字段類型,具體如下:
① 時間日期類型datetime/mysql時間戳timestamp(Ymdhis:20181212121212,對應(yīng)顯示2018-12-12 12:12:12),那么結(jié)果應(yīng)該是:UPDATE T_SYUTYOU SET UPDATE_DATE = now(); ,因?yàn)閚ow()保存的結(jié)果是一個datetime類型
② 時間型time(his:121212,對應(yīng)顯示12:12:12),那么結(jié)果應(yīng)該是:UPDATE T_SYUTYOU SET UPDATE_DATE = curtime()/current_time(); ,因?yàn)閏urtime()和current_time()一樣保存的結(jié)果是一個time類型
③ 真正時間戳int unsigned(格林位置時間到目前位置的秒數(shù):1545891091),那么結(jié)果應(yīng)該是:UPDATE T_SYUTYOU SET UPDATE_DATE = unix_timestamp();,因?yàn)閡nix_timestamp()保存的結(jié)果是一個真正意義的時間戳
想要了解更多的一些關(guān)于MySQL的操作,可以去看看黑馬程序員的6天玩轉(zhuǎn)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數(shù)據(jù)的交互
能看出來mysql中的date和datetime區(qū)別還是挺大的,date沒有保存時間。但是java中的date(java.util.Date)記錄的還是挺細(xì)的,日期和時間都可以記下來,那么現(xiàn)在問題來了,如果想在mysql中存儲日期和時間,也就是用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時,生成的還是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ù)據(jù)庫的就是“yyyy-mm-dd hh:mm:ss”格式的數(shù)據(jù)。
注意,mysql中如果使用date而不是datetime是保存不下“日期+時間”的,只能保存“時間”。