Sql ..如何用分钟计算DATEDIFF小时 [英] Sql .. How to calculate DATEDIFF hour with minutes

查看:1038
本文介绍了Sql ..如何用分钟计算DATEDIFF小时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何返回hh:mm

How could return hh:mm

ALTER FUNCTION [dbo].[fn_GetTotal_Hour_and_Munites]
(
    @DateFrom Datetime,
    @DateTo Datetime
)
RETURNS DECIMAL(18,2)
AS
BEGIN
 
DECLARE @TotalWorkDays INT, @TotalTimeDiff DECIMAL(18, 2)
 
SET @TotalWorkDays = DATEDIFF(DAY, @DateFrom, @DateTo)
				    -(DATEDIFF(WEEK, @DateFrom, @DateTo) * 2)
					   -CASE
                                    WHEN DATENAME(WEEKDAY, @DateFrom) = 'Sunday'
                                    THEN 1
                                    ELSE 0
                                END+CASE
                                        WHEN DATENAME(WEEKDAY, @DateTo) = 'Saturday'
                                        THEN 1
                                        ELSE 0
                                    END;
SET @TotalTimeDiff =
(
    SELECT DATEDIFF(SECOND,
                   (
                       SELECT CONVERT(Time, @DateFrom)
                   ),
                   (
                       SELECT CONVERT(Time, @DateTo)
                   )) %3600 /60
);
 
RETURN  (SELECT(@TotalWorkDays *24*60*60) + @TotalTimeDiff)
END



=================================== =======

此功能仅返回分钟00:23

=================== =======================

但不要告诉改为/3600.0

RETURN (选择(@TotalWorkDays * 24)+ @TotalTimeDiff)



因为它再回到第二名然后59比如10:86

我只想要最大秒数为59

如同10:59



我尝试过的事情:



我试图改变



))/ 3600

);



返回(选择(@TotalWorkDays * 24)+ @TotalTimeDiff)

================== ==============================

此功能返回OUTPOT小时o nly 10:00

====================================== ==========

怎么能用分钟返回小时? 10:23成为MAX喜欢10:59不是10:86


==========================================
this function return only Minutes 00:23
==========================================
but DON'T tell to change to /3600.0
RETURN (SELECT(@TotalWorkDays * 24) + @TotalTimeDiff)

because it return second more then 59 Like 10:86
I just want max second to be 59
like 10:59

What I have tried:

I Tried to change

)) /3600
);

RETURN (SELECT(@TotalWorkDays *24) + @TotalTimeDiff)
================================================
this function return OUTPOT Hours only 10:00
================================================
how could return Hour with Minutes? 10:23 to be MAX Like 10:59 NOT 10:86

推荐答案

1。以秒为单位获取实际差异

1. Get the actual difference in seconds
SET @d = DATEDIFF(s, @start, @end)



2.将秒数加到0


2. Add the number of seconds to 0

DATEADD(s, @d, 0)





例如,123秒它将创建01/01/1900 00:02:03 ......



For instance for 123 seconds it will create 01/01/1900 00:02:03...


这篇关于Sql ..如何用分钟计算DATEDIFF小时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆