您好,登錄后才能下訂單哦!
這篇文章主要介紹了MySQL中常用的日期相關(guān)函數(shù)有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
目錄
第一部分:時(shí)間差函數(shù) timestampdiff、datediff、timediff
一、時(shí)間差函數(shù):timestampdiff
二、時(shí)間差函數(shù):datediff
三、時(shí)間差函數(shù):timediff
四、其他日期函數(shù)
其他日期函數(shù)
第二部分 日期、時(shí)間戳、字符串互相轉(zhuǎn)換
其他
第一部分:時(shí)間差函數(shù) timestampdiff、datediff、timediff
一、時(shí)間差函數(shù):timestampdiff
語法:timestampdiff(interval, datetime1,datetime2)
結(jié)果:返回(時(shí)間2-時(shí)間1)的時(shí)間差,結(jié)果單位由 interval 參數(shù)給出。
interval
frac_second 毫秒(低版本不支持,用second,再除于1000)
second 秒
minute 分鐘
hour 小時(shí)
day 天
week 周
month 月
quarter 季度
year 年
注意:MySQL 5.6之后才支持毫秒的記錄和計(jì)算,如果是之前的版本,最好是在數(shù)據(jù)庫除datetime類型之外的字段,再建立用于存儲毫秒的int字段,然后自己進(jìn)行轉(zhuǎn)換計(jì)算。# 所有格式
SELECT TIMESTAMPDIFF(FRAC_SECOND,'2012-10-01','2013-01-13'); # 暫不支持SELECT TIMESTAMPDIFF(SECOND,'2012-10-01','2013-01-13'); # 8985600SELECT TIMESTAMPDIFF(MINUTE,'2012-10-01','2013-01-13'); # 149760SELECT TIMESTAMPDIFF(HOUR,'2012-10-01','2013-01-13'); # 2496SELECT TIMESTAMPDIFF(DAY,'2012-10-01','2013-01-13'); # 104SELECT TIMESTAMPDIFF(WEEK,'2012-10-01','2013-01-13'); # 14SELECT TIMESTAMPDIFF(MONTH,'2012-10-01','2013-01-13'); # 3SELECT TIMESTAMPDIFF(QUARTER,'2012-10-01','2013-01-13'); # 1SELECT TIMESTAMPDIFF(YEAR,'2012-10-01','2013-01-13'); # 0
二、時(shí)間差函數(shù):datediff
語法:SELECT DATEDIFF(日期1, 日期2)
結(jié)果:日期1 - 日期2 的天數(shù)的差
SLECT DATEDIFF('2013-01-13','2012-10-01'); # 104
三、時(shí)間差函數(shù):timediff
語法:timediff(time1,time2)
結(jié)果:返回 time1-time2 的差值
SELECT TIMEDIFF('2018-05-21 14:51:43','2018-05-19 12:54:43');#49:57:00
注意:該方法兩個參數(shù)必須為日期格式
四、其他日期函數(shù)
now()函數(shù)返回的是當(dāng)前時(shí)間的年月日時(shí)分秒
curdate()函數(shù)返回的是年月日信息
curtime()函數(shù)返回的是當(dāng)前時(shí)間的時(shí)分秒信息
對一個包含年月日時(shí)分秒日期格式化成年月日日期,可以使用DATE(time)函數(shù)
其他日期函數(shù)
SELECT NOW(); # 2018-05-21 14:41:00SELECT CURDATE(); # 2018-05-21SELECT CURTIME(); # 14:41:38SELECT DATE(NOW()); # 2018-05-21SELECT SYSDATE(); # 2018-05-21 14:47:11SELECT CURRENT_TIME(); # 14:51:30SELECT CURRENT_TIMESTAMP; # 2018-05-21 14:51:37SELECT CURRENT_TIMESTAMP(); # 2018-05-21 14:51:43
注意:now()與sysdate()類似,只不過now()在執(zhí)行開始時(shí)就獲取,而sysdate()可以在函數(shù)執(zhí)行時(shí)動態(tài)獲取。
第二部分 日期、時(shí)間戳、字符串互相轉(zhuǎn)換
#時(shí)間日期轉(zhuǎn)字符串 相當(dāng)與Oracle中的to_char函數(shù)select date_format(now(), '%Y-%m-%d'); #結(jié)果:2017-02-27#時(shí)間轉(zhuǎn)時(shí)間戳select unix_timestamp(now()); #結(jié)果:1488160428#字符串轉(zhuǎn)時(shí)間select str_to_date('2017-02-27', '%Y-%m-%d %H'); #結(jié)果:2017-02-27 00:00:00select str_to_date('2017-10-16 15:30:28','%Y-%m-%d %H:%i:%s'); #結(jié)果 2017-10-16 15:30:28#注意 年是大寫‘Y’,小時(shí)也必須是大寫‘H’ (如果其他為大寫,則得到結(jié)果為null)#字符串轉(zhuǎn)時(shí)間戳select unix_timestamp('2017-02-27'); #結(jié)果:1488124800#時(shí)間戳轉(zhuǎn)時(shí)間select from_unixtime(1488160428); #結(jié)果:2017-02-27 09:53:48#時(shí)間戳轉(zhuǎn)字符串select from_unixtime(1488160428,'%Y-%m-%d %T'); #結(jié)果:2017-02-27 09:53:48 SELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'); -- 獲取當(dāng)天零點(diǎn)select curdate(); --獲取當(dāng)前日期select last_day(curdate()); --獲取當(dāng)月最后一天。select DATE_ADD(curdate(),interval -day(curdate())+1 day); --獲取本月第一天select date_add(curdate()-day(curdate())+1,interval 1 month); -- 獲取下個月的第一天select DATEDIFF(date_add(curdate()-day(curdate())+1,interval 1 month ),DATE_ADD(curdate(),interval -day(curdate())+1 day)) from dual; --獲取當(dāng)前月的天數(shù)
其他
SELECT DAY('2021-2-17') -- 當(dāng)前月的第幾天(17)SELECT MONTH('2021-2-17') -- 當(dāng)前為幾月(2)
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“MySQL中常用的日期相關(guān)函數(shù)有哪些”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。