今天給大家分享如何通過MySQL內置函數實現時間的轉換和計算,在工作當中,測試人員經常需要查詢數據庫表的日期時間,但發現開發人員存入數據庫表的形式都是時間戳形式,不利于測試人員查看,測試人員只能利用工具對時間戳進行轉換,才能直觀查看。但這樣會增加測試人員的效率,那么可巧妙的使用MySQL內置函數,便可以輕松解決這個問題,以及通過內置函數對時間進行加減計算,便可以提高工作的效率。
(一)時間戳和日期時間的轉換
應用場景
用于獲取當前的日期時間、時間戳,以及時間戳和日期時間的轉換
# 1.獲取當前日期時間
select now();# 2.獲取當前時間戳
select unix_timestamp();# 3.時間戳轉成日期時間
select from_unixtime(1688264330);# 4.日期時間轉成時間戳
select unix_timestamp('2023-07-02 00:00:00');
(二)日期時間的加減計算
1.date_add()
說明:date_add():為當前日期增加一個時間間隔
用法:此函數可用于計算距離當前日期一個月之后的日期
語法格式:DATE_ADD(date,interval expr type)
date:指定的時間日期
interval:固定寫法
expr:所增加的時間間隔
type:時間間隔的單位,包括:秒、分鐘、小時、天、星期、月、季、年等
# 加1天
select now(),date_add(now(), interval 1 day);
# 加1小時
select now(),date_add(now(), interval 1 hour);
# 加1分鐘
select now(),date_add(now(), interval 1 minute );
# 加1秒
select now(),date_add(now(), interval 1 second );# 加1周
select now(),date_add(now(), interval 1 week);
# 加1個月
select now(),date_add(now(), interval 1 month);
# 加1季度
select now(),date_add(now(), interval 1 quarter );
# 加1年
select now(),date_add(now(), interval 1 year );
2. date_sub()
說明:date_sub():為當前日期減去一個時間間隔
用法:此函數可用于計算距離當前日期一個月之前的日期
語法格式:DATE_SUB(date,interval expr type)
date:指定的時間日期
interval:固定寫法
expr:所減去的時間間隔
type:時間間隔的單位,包括:秒、分鐘、小時、天、星期、月、季、年等
# 減1天
select date_sub(now(), interval 1 day);
# 減1小時
select date_sub(now(), interval 1 hour);
# 減1分鐘
select now(),date_sub(now(), interval 1 minute );
# 減1秒
select now(),date_sub(now(), interval 1 second );# 減1周
select now(),date_sub(now(), interval 1 week);
# 減1個月
select now(),date_sub(now(), interval 1 month);
# 減1季度
select now(),date_sub(now(), interval 1 quarter );
# 減1年
select now(),date_sub(now(), interval 1 year );
(三)兩個日期時間的間隔計算
方式一
內置函數:TimeStampDiff(間隔類型,前一個日期,后一個日期);
間隔類型:second:秒,minute:分鐘,hour:小時,day:天,week:周,month:月,quarter:季度,year:年
前一個日期:日期時間格式
后一個日期:日期時間格式
應用場景:用于計算兩個日期時間的間隔時間
# 計算間隔的秒
select timestampdiff(second , '2023-07-05 00:00:00',now());# 另外可用函數sec_to_time()將秒換算成:時:分:秒格式
select sec_to_time(1500);#計算間隔的分鐘
select timestampdiff(minute , '2023-07-05 00:00:00',now());# 計算間隔的小時
select timestampdiff(hour , '2023-07-05 00:00:00',now());# 計算間隔的天
select timestampdiff(day, '2023-07-05 00:00:00',now());# 另外可通過兩個日期的時間戳相減,得到間隔的時間戳形式
select unix_timestamp()- unix_timestamp('2023-07-05');
方式二
應用場景:直接將兩個日期時間相減,得到的間隔時間為:XX天XX小時XX分鐘XX秒
# 將時間間隔換算成XX天XX小時XX分鐘XX秒
# 1.通過timestampdiff()函數計算兩個日期所間隔的秒數
# 2.然后通過floor(): 返回一個小于或等于X的最大整數,向下取整
# 3.在使用convert()函數分別將秒數換算成:天、小時、分鐘、秒,得到結果selectconvert(floor(timestampdiff(second , '2023-07-05 00:00:00', now())/(3600*24)),char) '天',convert(floor(timestampdiff(second , '2023-07-05', now())%(3600*24)/3600),char) '小時',convert(floor(timestampdiff(second , '2023-07-05', now())%3600/60),char) '分',convert(timestampdiff(second , '2023-07-05', now())%60,char) '秒';
查詢結果
最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?