共計 2894 個字符,預計需要花費 8 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要介紹了 MySQL 中常用的日期相關函數有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
目錄
第一部分:時間差函數 timestampdiff、datediff、timediff
一、時間差函數:timestampdiff
二、時間差函數:datediff
三、時間差函數:timediff
四、其他日期函數
其他日期函數
第二部分 日期、時間戳、字符串互相轉換
其他
第一部分:時間差函數 timestampdiff、datediff、timediff
一、時間差函數:timestampdiff
語法:timestampdiff(interval, datetime1,datetime2)
結果:返回(時間 2 - 時間 1)的時間差,結果單位由 interval 參數給出。
interval
frac_second 毫秒(低版本不支持,用 second,再除于 1000)
second 秒
minute 分鐘
hour 小時
day 天
week 周
month 月
quarter 季度
year 年
注意:MySQL 5.6 之后才支持毫秒的記錄和計算,如果是之前的版本,最好是在數據庫除 datetime 類型之外的字段,再建立用于存儲毫秒的 int 字段,然后自己進行轉換計算。# 所有格式
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
二、時間差函數:datediff
語法:SELECT DATEDIFF(日期 1, 日期 2)
結果:日期 1 – 日期 2 的天數的差
SLECT DATEDIFF(2013-01-13 , 2012-10-01 # 104
三、時間差函數:timediff
語法:timediff(time1,time2)
結果:返回 time1-time2 的差值
SELECT TIMEDIFF(2018-05-21 14:51:43 , 2018-05-19 12:54:43 #49:57:00
注意:該方法兩個參數必須為日期格式
四、其他日期函數
now() 函數返回的是當前時間的年月日時分秒
curdate() 函數返回的是年月日信息
curtime() 函數返回的是當前時間的時分秒信息
對一個包含年月日時分秒日期格式化成年月日日期,可以使用 DATE(time) 函數
其他日期函數
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() 在執行開始時就獲取,而 sysdate() 可以在函數執行時動態獲取。
第二部分 日期、時間戳、字符串互相轉換
# 時間日期轉字符串 相當與 Oracle 中的 to_char 函數 select date_format(now(), %Y-%m-%d #結果:2017-02-27#時間轉時間戳 select unix_timestamp(now()); #結果:1488160428# 字符串轉時間 select str_to_date(2017-02-27 , %Y-%m-%d %H # 結果:2017-02-27 00:00:00select str_to_date( 2017-10-16 15:30:28 , %Y-%m-%d %H:%i:%s #結果 2017-10-16 15:30:28#注意 年是大寫‘Y’,小時也必須是大寫‘H’ ( 如果其他為大寫,則得到結果為 null)# 字符串轉時間戳 select unix_timestamp(2017-02-27 #結果:1488124800#時間戳轉時間 select from_unixtime(1488160428); #結果:2017-02-27 09:53:48# 時間戳轉字符串 select from_unixtime(1488160428, %Y-%m-%d %T # 結果:2017-02-27 09:53:48
SELECT DATE_FORMAT(CURDATE(), %Y-%m-%d %H:%i:%s -- 獲取當天零點 select curdate(); -- 獲取當前日期 select last_day(curdate()); -- 獲取當月最后一天。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; -- 獲取當前月的天數
其他
SELECT DAY(2021-2-17) -- 當前月的第幾天 (17)SELECT MONTH(2021-2-17) -- 當前為幾月 (2)
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“MySQL 中常用的日期相關函數有哪些”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!
向 AI 問一下細節