設(shè)置某字段為當(dāng)前時(shí)間,修改日期類型為timestamp并允許空,如下:CREATETABLE`test`(`aaaa`varchar(50)NOTNULL,`createday`timestampNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP)ENGINE=InnoDBDEFAULTCHARSET=utf8;如果是在navicat下操作的話,設(shè)置字段的類型為timestamp,默認(rèn)值寫上CURRENT_TIMESTAMP.
普蘭ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
Mysql中經(jīng)常用來存儲日期的數(shù)據(jù)類型有三種:Date、Datetime、Timestamp。
Date數(shù)據(jù)類型:用來存儲沒有時(shí)間的日期。Mysql獲取和顯示這個(gè)類型的格式為“YYYY-MM-DD”。支持的時(shí)間范圍為“1000-00-00”到“9999-12-31”。
Datetime類型:存儲既有日期又有時(shí)間的數(shù)據(jù)。存儲和顯示的格式為 “YYYY-MM-DD HH:MM:SS”。支持的時(shí)間范圍是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
Timestamp類型:也是存儲既有日期又有時(shí)間的數(shù)據(jù)。存儲和顯示的格式跟Datetime一樣。支持的時(shí)間范圍是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
所有不符合上面所述格式的數(shù)據(jù)都會被轉(zhuǎn)換為相應(yīng)類型的0值。(0000-00-00或者0000-00-00 00:00:00)
java中有date和datetime,mysql中也有date和datetime,這里我們來說說mysql中的date和datetime。
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中存儲日期和時(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í)間”。
用字符串連接函數(shù)CONCAT來完成,如:SELECT CONCAT(year(date1), month(date2), day(date3)) FROM tabal
Mysql中經(jīng)常用來存儲日期的數(shù)據(jù)類型有三種:Date、Datetime、Timestamp。
Date數(shù)據(jù)類型:用來存儲沒有時(shí)間的日期。Mysql獲取和顯示這個(gè)類型的格式為“YYYY-MM-DD”。支持的時(shí)間范圍為“1000-00-00”到“9999-12-31”。
Datetime類型:存儲既有日期又有時(shí)間的數(shù)據(jù)。存儲和顯示的格式為 “YYYY-MM-DD HH:MM:SS”。支持的時(shí)間范圍是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
Timestamp類型:也是存儲既有日期又有時(shí)間的數(shù)據(jù)。存儲和顯示的格式跟Datetime一樣。支持的時(shí)間范圍是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
所有不符合上面所述格式的數(shù)據(jù)都會被轉(zhuǎn)換為相應(yīng)類型的0值。(0000-00-00或者0000-00-00 00:00:00)
首先,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)的時(shí)間日期格式類型,也就是UPDATE_DATE的字段類型,具體如下:
① 時(shí)間日期類型datetime/mysql時(shí)間戳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é)果是一個(gè)datetime類型
② 時(shí)間型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é)果是一個(gè)time類型
③ 真正時(shí)間戳int unsigned(格林位置時(shí)間到目前位置的秒數(shù):1545891091),那么結(jié)果應(yīng)該是:UPDATE T_SYUTYOU SET UPDATE_DATE = unix_timestamp();,因?yàn)閡nix_timestamp()保存的結(jié)果是一個(gè)真正意義的時(shí)間戳
想要了解更多的一些關(guān)于MySQL的操作,可以去看看黑馬程序員的6天玩轉(zhuǎn)MySQL