在mySQL中的存储过程

在mySQL中的存储过程

问题描述:

我想在MySQL中使用存储过程将小时转换为分钟。例如,我得到的输出为3小时15分钟。我需要将它转换为195分钟。我尝试使用多个案例,但没有为我工作......你能帮我,如果你有任何代码来解决这个?在mySQL中的存储过程

+0

为什么你需要一个存储过程。只需将小时数乘以60并添加分钟数,即可获得答案。 –

+0

感谢您的回复Hatim Stovewala!但是,实际情况是,我将在数据库字段中获得xx小时xx分钟的输出。我需要将其转换为分钟并将其存储在另一个字段中。所以我需要这个场景的代码。 –

+0

@Vivek Varma请分享表格结构和一些示例数据作为格式化文本。 –

您可以使用函数来达到此目的。

​​

调用该函数:

SELECT toMinutes(1,1); 

我的工作要求,并能成功地创建一个函数如下!

/****** Object: UserDefinedFunction [dbo].[BUSINESS_DURATION_MINTS_FN] Script Date: 10/17/2017 12:22:12 PM ******/ 
SET ANSI_NULLS OFF 
GO 

SET QUOTED_IDENTIFIER ON 
GO 


ALTER FUNCTION [dbo].[BUSINESS_DURATION_MINTS_FN] 
(@string varchar(100)) 
RETURNS INT 
AS 



BEGIN 
DECLARE @total_mints INT 
DECLARE @hours INT 
DECLARE @Mints INT 
IF @string IS NOT NULL 
BEGIN 
SET @string = REPLACE(UPPER(@string),'HOURS','HOUR') 
SET @string = REPLACE(UPPER(@string),'MINUTES','MINUTE') 
IF ((CHARINDEX(UPPER('HOUR'),UPPER(@string))!=0) AND (CHARINDEX(UPPER('MINUTE'),UPPER(@string))!= 0)) 

    BEGIN 
    SET @hours = CONVERT(INT,SUBSTRING(@string,1, (CHARINDEX(UPPER('HOUR'), UPPER(@string))-2))) 
    SET @Mints = CONVERT(INT,SUBSTRING(@string,(CHARINDEX(UPPER('HOUR'),UPPER(@string))+4),(CHARINDEX(UPPER('MINUTE'),UPPER(@string))-(CHARINDEX(UPPER('HOUR'), UPPER(@string))+5)))) 
    END 


    IF ((CHARINDEX(UPPER('HOUR'),UPPER(@string))=0) AND (CHARINDEX(UPPER('MINUTE'),UPPER(@string))!= 0)) 
    BEGIN 
    SET @hours = 0 
    SET @Mints = CONVERT(INT,SUBSTRING(@string,1, (CHARINDEX(UPPER('MINUTE'), UPPER(@string))-2))) 
    END 


    IF ((CHARINDEX(UPPER('HOUR'),UPPER(@string))!=0) AND (CHARINDEX(UPPER('MINUTE'),UPPER(@string))=0)) 
    BEGIN 
    SET @hours = CONVERT(INT,SUBSTRING(@string,1, (CHARINDEX(UPPER('HOUR'), UPPER(@string))-2))) 
    SET @Mints = 0 
    END 

    IF ((CHARINDEX(UPPER('HOUR'),UPPER(@string))= 0) AND (CHARINDEX(UPPER('MINUTE'),UPPER(@string))=0)) 
    BEGIN 
    SET @hours = 0  
    SET @Mints = 0 
    END 

    SET @total_mints = @hours*60 + @Mints 


    END 
    IF @string IS NULL 
    BEGIN 
    SET @total_mints = NULL 

    END 
    RETURN @total_mints 

END 


GO 
+0

我无法在存储过程中调用此函数。任何人都可以帮助我? –

+0

从SP调用函数时会出现什么错误? –