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
-2
A
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? –
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. –
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. –
@Vivek Varma s'il vous plaît partager la structure de la table et quelques données d'exemple en tant que texte formaté. –