Home > Database > Mysql Tutorial > MYSQL自定义函数之返回两个时间的指定类型时差

MYSQL自定义函数之返回两个时间的指定类型时差

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 14:58:04
Original
1241 people have browsed it

该函数在MYSQL下编写,5.1版本测试通过。 函数需要传入三个参数,类型(用于区别应返回时差年、时差月...时差秒),起始时间(用于计算),结束时间(用于计算) 无 DELIMITER $$CREATE FUNCTION DateBetween (AType INT, ADateStart DATETIME, ADateEnd DATETIME)R

该函数在MYSQL下编写,5.1版本测试通过。
函数需要传入三个参数,类型(用于区别应返回时差年、时差月...时差秒),起始时间(用于计算),结束时间(用于计算)
DELIMITER $$

CREATE FUNCTION DateBetween
  (AType INT, ADateStart DATETIME, ADateEnd DATETIME)
RETURNS BIGINT
BEGIN
DECLARE AResult BIGINT DEFAULT -1;
/*入参AType INT类型,结果类型 1:年 2:月 3:日 4:小时 5:分钟 6:秒钟 (必须在1-6内,否则结果返回-1)
*入参ADateStart DATETIME类型,起始时间 (必须是一个正确的日期参数)
*入参ADateEnd DATETIME类型,结束时间 (必须是一个正确的日期参数)
*返回值 BIGINT类型,返回起始之间与结束时间的指定时差 (成功返回计算出的时差,失败返回-1)
*/
IF ADateStart != '' AND ADateEnd != '' AND AType >=1 AND AType <= 6 THEN
  CASE AType
  WHEN 1 THEN
    SELECT TIMESTAMPDIFF(YEAR, ADateStart, ADateEnd) INTO AResult; 
  WHEN 2 THEN 
    SELECT TIMESTAMPDIFF(MONTH, ADateStart, ADateEnd) INTO AResult;   
  WHEN 3 THEN
    SELECT TIMESTAMPDIFF(DAY, ADateStart, ADateEnd) INTO AResult; 
  WHEN 4 THEN
    SELECT TIMESTAMPDIFF(HOUR, ADateStart, ADateEnd) INTO AResult; 
  WHEN 5 THEN
    SELECT TIMESTAMPDIFF(MINUTE, ADateStart, ADateEnd) INTO AResult; 
  WHEN 6 THEN
    SELECT TIMESTAMPDIFF(SECOND, ADateStart, ADateEnd) INTO AResult; 
  END CASE;
END IF;
RETURN(AResult); 
END$$


Copy after login
SELECT DateBetween(0, '2010-01-01 00:00:00', '2010-01-01 10:00:00');
SELECT DateBetween(1, '2001-01-01', '2010-01-01');
SELECT DateBetween(2, '2010-01-01', '2010-12-01');
SELECT DateBetween(3, '2010-01-01', '2010-01-31');
SELECT DateBetween(4, '2010-01-01 00:00:00', '2010-01-01 10:00:00');
SELECT DateBetween(5, '2010-01-01 00:00:00', '2010-01-01 10:00:00');
SELECT DateBetween(6, '2010-01-01 00:00:00', '2010-01-01 10:00:00');
SELECT DateBetween(7, '2010-01-01 00:00:00', '2010-01-01 10:00:00');
Copy after login
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
MySQL stops process
From 1970-01-01 08:00:00
0
0
0
Error when installing mysql on linux
From 1970-01-01 08:00:00
0
0
0
phpstudy cannot start mysql?
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template