2017-10-16 14 views
-2

Je suis en train de convertir des heures en minutes en utilisant des procédures stockées dans MySQL. Par exemple, je reçois la sortie sous la forme 3 heures 15 minutes. J'ai besoin de le convertir en 195 minutes. J'ai essayé d'utiliser plusieurs cas, mais rien n'a fonctionné pour moi .. Pouvez-vous s'il vous plaît m'aider si vous avez un code pour résoudre ce problème ???Procédures stockées IN mySQL

+0

Pourquoi avez-vous besoin d'une procédure stockée pour cela? Il suffit de multiplier les heures avec 60 et ajouter des minutes, vous aurez votre réponse. –

+0

Merci pour la réponse Hatim Stovewala! Mais, en réalité le scénario est que je vais obtenir la sortie xx heures xx minutes dans un champ de base de données. Je dois le convertir en minutes et le stocker dans un autre champ. J'ai donc besoin de code pour ce scénario. –

+0

@Vivek Varma s'il vous plaît partager la structure de la table et quelques données d'exemple en tant que texte formaté. –

Répondre

0

Vous pouvez utiliser Function à cette fin.

DELIMITER $$ 
CREATE FUNCTION `toMinutes` 
(
    hour INT, 
    minute INT 
) 
RETURNS INTEGER 
BEGIN 

    DECLARE result INT; 

    SET result = (hour * 60) + minute; 

    RETURN result; 

END$$ 
DELIMITER ; 

Appelez la fonction:

SELECT toMinutes(1,1); 
0

J'ai travaillé sur l'exigence et capable de créer une fonction avec succès comme suit !!!

/****** 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

Je ne suis pas en mesure d'appeler cette fonction dans une procédure stockée. Quelqu'un peut-il m'aider dans ce ?? –

+0

Quelle erreur obtenez-vous lorsque vous appelez la fonction de SP? –