Mysql TIMESTAMPDIFF函數(shù)示例詳解
TIMESTAMPDIFF函數(shù)用于計(jì)算兩個(gè)日期的時(shí)間差
語(yǔ)法結(jié)構(gòu)
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
參數(shù)說(shuō)明
unit: 日期比較返回的時(shí)間差單位,常用可選值如下:
SECOND:秒
MINUTE:分鐘
HOUR:小時(shí)
DAY:天
WEEK:星期
MONTH:月
QUARTER:季度
YEAR:年
datetime_expr1: 要比較的日期1
datetime_expr2: 要比較的日期2
TIMESTAMPDIFF函數(shù)返回datetime_expr2 - datetime_expr1的結(jié)果,其中datetime_expr1和datetime_expr2可以是DATE或DATETIME類(lèi)型值
示例
-- 相差:25秒 SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 14:57:00','2022-04-23 14:57:25'); -- 相差:5分鐘 SELECT TIMESTAMPDIFF(MINUTE,'2022-04-23 15:00:00','2022-04-23 15:05:00'); -- 相差:5小時(shí) SELECT TIMESTAMPDIFF(HOUR,'2022-04-23 11:20:00', '2022-04-23 16:20:00'); -- 相差:2天 SELECT TIMESTAMPDIFF(DAY,'2022-04-23 11:20:00', '2022-04-25 11:20:00'); -- 相差:1星期 SELECT TIMESTAMPDIFF(WEEK,'2022-04-23 11:20:00', '2022-04-30 11:20:00'); -- 相差:1月 SELECT TIMESTAMPDIFF(MONTH,'2022-04-23 11:20:00', '2022-05-30 11:20:00'); -- 相差:1季度 SELECT TIMESTAMPDIFF(QUARTER,'2022-04-23 11:20:00', '2022-07-23 11:20:00'); -- 相差:1年 SELECT TIMESTAMPDIFF(YEAR,'2022-04-23 11:20:00', '2023-04-23 11:20:00');
TIMESTAMPDIFF函數(shù)允許其搭配使用的參數(shù)datetime_expr1和datetime_expr2具有混合類(lèi)型
案例
datetime_expr1是DATE類(lèi)型值,datetime_expr2是DATETIME類(lèi)型值,TIMESTAMPDIFF函數(shù)會(huì)將datetime_expr1自動(dòng)轉(zhuǎn)換成DATETIME類(lèi)型值(即在日期后面加上時(shí)間“00:00:00”)
-- 12 SELECT TIMESTAMPDIFF(HOUR,'2022-04-27','2022-04-27 12:00:00'); -- 12 SELECT TIMESTAMPDIFF(HOUR,'2022-04-27 00:00:00','2022-04-27 12:00:00');
上述兩行代碼等價(jià),返回的都是相同的結(jié)果
TIMESTAMPDIFF函數(shù)可以結(jié)合日期函數(shù)進(jìn)行搭配使用
-- 可以結(jié)合日期函數(shù)進(jìn)行搭配使用 SELECT TIMESTAMPDIFF(SECOND,'2022-04-23', CURRENT_DATE()); SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 15:15:00',NOW()); SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 15:15:00',CURRENT_TIMESTAMP()); -- 上述日期函數(shù)補(bǔ)充說(shuō)明 -- CURRENT_DATE()用于返回當(dāng)前時(shí)間 -- 示例結(jié)果:2022-04-27 SELECT CURRENT_DATE(); -- NOW()用于返回當(dāng)前日期和時(shí)間 -- 示例結(jié)果:2022-04-27 11:27:28 SELECT NOW(); -- CURRENT_TIMESTAMP()用于返回當(dāng)前日期和時(shí)間 -- 示例結(jié)果:2022-04-27 11:30:25 SELECT CURRENT_TIMESTAMP();
練習(xí)案例
導(dǎo)入數(shù)據(jù)
DROP TABLE IF EXISTS Student;
CREATE TABLE Student (
SId VARCHAR (10),
Sname VARCHAR (10),
Sage datetime,
Ssex VARCHAR (10)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO Student(SId,Sname,Sage,Ssex)
VALUES('01' , '趙雷' , '1990-01-01' , '男')
,('02' , '錢(qián)電' , '1990-12-21' , '男')
,('03' , '孫風(fēng)' , '1990-05-20' , '男')
,('04' , '李云' , '1990-08-06' , '男')
,('05' , '周梅' , '1991-12-01' , '女')
,('06' , '吳蘭' , '1992-03-01' , '女')
,('07' , '鄭竹' , '1989-07-01' , '女')
,('08' , '張三' , '2017-12-20' , '女')
,('09' , '李四' , '2017-12-25' , '女')
,('11' , '李四' , '2017-12-30' , '女')
,('12' , '孫七' , '2018-01-01' , '女');Student表

問(wèn)題:按照出生日期來(lái)算學(xué)生年齡,其中當(dāng)前月日<出生年月的月日,則年齡減一
解題思路
使用NOW()、TIMESTAMPDIFF()函數(shù)計(jì)算年齡
SELECT *, TIMESTAMPDIFF(YEAR,Sage,NOW())AS age FROM Student;
結(jié)果展示:

到此這篇關(guān)于Mysql TIMESTAMPDIFF函數(shù)示例詳解的文章就介紹到這了,更多相關(guān)mysql timestampdiff 函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL中DATEDIFF()函數(shù)用法及返回周、月、年
- Mysql中TIMESTAMPDIFF函數(shù)的語(yǔ)法與練習(xí)案例
- mysql中TIMESTAMPDIFF案例詳解
- MySQL的時(shí)間差函數(shù)TIMESTAMPDIFF、DATEDIFF的用法
- MySQL的時(shí)間差函數(shù)(TIMESTAMPDIFF、DATEDIFF)、日期轉(zhuǎn)換計(jì)算函數(shù)(date_add、day、date_format、str_to_date)
- MySQL中的datediff()方法和timestampdiff()方法的應(yīng)用示例小結(jié)
相關(guān)文章
mysql創(chuàng)建存儲(chǔ)的全過(guò)程
MySQL中沒(méi)有直接的FOR循環(huán)語(yǔ)句,可通過(guò)存儲(chǔ)過(guò)程實(shí)現(xiàn)循環(huán)執(zhí)行SQL,需替換表名和列名,存儲(chǔ)過(guò)程示例將1到10插入表中,執(zhí)行和刪除存儲(chǔ)過(guò)程需特定命令2024-11-11
mysql序號(hào)rownum行號(hào)實(shí)現(xiàn)方式
MySQL查詢(xún)語(yǔ)句簡(jiǎn)單操作示例
深入淺析MySQL 中 Identifier Case Sensitivity問(wèn)題
QT連接MYSQL數(shù)據(jù)庫(kù)的詳細(xì)步驟
Mysql 5.6使用配置文件my.ini來(lái)設(shè)置長(zhǎng)時(shí)間連接數(shù)據(jù)庫(kù)的問(wèn)題

