共計 3122 個字符,預(yù)計需要花費 8 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“MySQL 中的日期時間類型與格式化方式是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
【1】MySQL 中的日期時間類型
MySQL 中常用的幾種時間類型有:date、datetime、time、year、timestamp
數(shù)據(jù)類型占用字節(jié)最小值最大值零值表示 date41000-01-019999-12-310000-00-00datetime81000-01-01 00:00:009999-12-31 23:59:590000-00-00 00:00: 00timestamp4197001010800012038 年的某個時刻 0000000000000000time3-838:59:59838:59:5900:00:00year1190121550000
詳細(xì)解釋
datetime : 時間日期型,格式是 YYYY-mm-dd HH:ii:ss,表示的范圍是從 1000 到 9999。但是有零值,0000-00-00 00:00:00;
date:日期,就是 datetime 中的 date 部分;
time:時間(段),指定的某個區(qū)間之間,從 - 時間到 + 時間(有負(fù)時間表示);
timestamp:時間戳,并不是常規(guī)意義時間戳(如:14253685),范圍是’1970-01-01 00:00:00’到 2037 年。格式為 YYYY-mm-dd HH:ii:ss, 格式與 datetime 完全一致;
year:yy 和 yyyy,yyyy 的范圍是 1901-2155,yy 的范圍是 1970-2069。
兩位 year(00-69 表示 2000-2069,70-99 表示 1970~1999)。當(dāng)應(yīng)用只需要記錄年份時,year 比 date 更省空間
SQL 語句實例
create table my_date(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;
desc my_date
如下圖所示:year 默認(rèn)為 4 位,即 YYYY;timestamp 不能為空,有默認(rèn)值,在創(chuàng)建新記錄和修改現(xiàn)有記錄的時候都對這個數(shù)據(jù)列刷新。
如下分別插入幾條數(shù)據(jù)并對 time 做差異分析:
insert into my_date VALUES( 2015-09-28 11:50:36 , 2015-09-28 , 11:50:54 , 2015-09-28 11:51:08 , 2015
insert into my_date VALUES( 2015-09-28 11:50:36 , 2015-09-28 , -11:50:54 , 2015-09-28 11:51:08 , 2015 -- -11
insert into my_date VALUES( 2015-09-28 11:50:36 , 2015-09-28 , -211:50:54 , 2015-09-28 11:51:08 , 2015 -- -2 11
insert into my_date VALUES( 2015-09-28 11:50:36 , 2015-09-28 , -2 11:50:54 , 2015-09-28 11:51:08 , 2015 -- - 2 過去兩天
#year 用 69 標(biāo)識 -2069
insert into my_date VALUES( 2015-09-28 11:50:36 , 2015-09-28 , 11:50:54 , 2015-09-28 11:51:08 , 69 -- 69
#year 用 70 標(biāo)識 -1970
insert into my_date VALUES(2015-09-28 11:50:36 , 2015-09-28 , 11:50:54 , 2015-09-28 11:51:08 , 70 -- 70
timestamp 字段
默認(rèn)情況下只要當(dāng)前所在的記錄被更新,該字段一定會自動更新成當(dāng)前時間。
update my_date set d1 = SYSDATE() where d5=69;
select * from my_date
那么 MySQL 可以拿到真正的時間戳嗎?當(dāng)然可以!
select UNIX_TIMESTAMP();
測試實例
4.1 查詢當(dāng)前時間
SELECT SYSDATE() from dual;
4.2 將當(dāng)前時間插入以上幾種類型列中
insert INTO `user` (name,number,date,datetime,timestamp,time,year)
VALUES (Loum ,3,SYSDATE(),SYSDATE(),SYSDATE(),SYSDATE(),2016);
4.3 mysql 中 datetime 類型的長度位數(shù)
如下所示,通常我們 MySQL 中設(shè)計 datetime 類型長度都默認(rèn)為 0:
`work_time` datetime(0) DEFAULT NULL COMMENT 清收時間 ,
這時插入時間通常會是我們常見到的:2020-08-29 12:52:16 格式。但是如果 datetime(n)中的 n 不為 0 呢?
`work_time` datetime(2) DEFAULT NULL COMMENT 清收時間 ,
# datetime(n)中的 n 最大值為 6
`work_time` datetime(6) DEFAULT NULL COMMENT 清收時間 ,
這時在 MySQL 中會分別顯示如下:
2020-08-29 12:52:16.01
2020-08-29 12:52:16.014057
會發(fā)現(xiàn)最后有一個小數(shù)點且小數(shù)點后面會分別對應(yīng)相應(yīng)位數(shù)的數(shù)字–這稱之為納秒。
總結(jié)如下:
date : 只有日期,沒有時間;
datetime:有時間,有日期;
time:只有時間,精確到分秒;
timestamp:時間戳,精確到分秒;
year:年,如 2002,如果寫為 2002-01-15,將會進(jìn)行計算,插入結(jié)果為 1986
【2】日期時間類型格式化
DATE_FORMAT()函數(shù)
可以使用 date_format()函數(shù)進(jìn)行時間的轉(zhuǎn)換。
SELECT DATE_FORMAT(SYSDATE(), %Y-%m-%d %H:%i:%s ) from dual;
date_format() 轉(zhuǎn)換格式格式描述 %a 縮寫星期名 %b 縮寫月名 %c 月,數(shù)值 %D 帶有英文前綴的月中的天 %d 月的天,數(shù)值 (00-31)%e 月的天,數(shù)值(0-31)%f 微秒 %H 小時 (00-23)%h 小時 (01-12)%I 小時 (01-12)%i 分鐘,數(shù)值(00-59)%j 年的天 (001-366)%k 小時 (0-23)%l 小時 (1-12)%M 月名 %m 月,數(shù)值(00-12)%pAM 或 PM%r 時間,12- 小時(hh:mm:ss AM 或 PM)%S 秒(00-59)%s 秒(00-59)%T 時間, 24- 小時 (hh:mm:ss)%U 周 (00-53) 星期日是一周的第一天 %u 周 (00-53) 星期一是一周的第一天 %V 周 (01-53) 星期日是一周的第一天,與 %X 使用 %v 周 (01-53) 星期一是一周的第一天,與 %x 使用 %W 星期名 %w 周的天(0= 星期日, 6= 星期六)%X 年,其中的星期日是周的第一天,4 位,與 %V 使用 %x 年,其中的星期一是周的第一天,4 位,與 %v 使用 %Y 年,4 位 %y 年,2 位 str_to_date() 函數(shù)
字符串轉(zhuǎn)換為 date:
str_to_date(
2016-12-15 16:48:40 ,
%Y-%m-%d %H:%i:%S
)
“MySQL 中的日期時間類型與格式化方式是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實用文章!