在mySQL中的存储过程
问题描述:
我想在MySQL中使用存储过程将小时转换为分钟。例如,我得到的输出为3小时15分钟。我需要将它转换为195分钟。我尝试使用多个案例,但没有为我工作......你能帮我,如果你有任何代码来解决这个?在mySQL中的存储过程
答
您可以使用函数来达到此目的。
调用该函数:
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调用函数时会出现什么错误? –
为什么你需要一个存储过程。只需将小时数乘以60并添加分钟数,即可获得答案。 –
感谢您的回复Hatim Stovewala!但是,实际情况是,我将在数据库字段中获得xx小时xx分钟的输出。我需要将其转换为分钟并将其存储在另一个字段中。所以我需要这个场景的代码。 –
@Vivek Varma请分享表格结构和一些示例数据作为格式化文本。 –