将 Excel 公式(使用日期和减法)转换为 T-SQL

Convert Excel formula (using Date and subtraction) into T-SQL

我正在尝试将此 Excel 公式写入 T-SQL(以编写函数)。

预期输出是 0.71944444,但目前我的输出(使用 T-SQL)是 24.0000。

我不确定为什么我们必须在同一日期上加上一天并减去同一日期。

底部是来自Excel的屏幕截图:

这是我目前在 T-SQL:

CREATE FUNCTION  [dbo].[fn_0921] (
    @Punch_Start nvarchar(max)
)
RETURNS  decimal(36, 8) AS

BEGIN   
    DECLARE @return_value nvarchar(max);
    
        SET @return_value =                         
                                    
                    DATEDIFF(
                            MINUTE, CAST(@Punch_Start AS datetime2), 
                                        (
                                            dateadd(
                                                    day, 1, CAST(@Punch_Start AS datetime2)
                                                    )
                                        )  
                            ) 
                    / (60.0)            
    RETURN @return_value
END;

感谢您的帮助。

这可能对您有帮助:

DECLARE @date DATETIME2 = '2021-07-25 06:44'
DECLARE @seconds INT = DATEDIFF(second, CAST(@date AS date), @date)
DECLARE @secondsFromEnd FLOAT = 86400 - @seconds
SELECT @secondsFromEnd / 86400

Excel 公式返回单元格 K4 中的日期时间与第二天开始时间(即 7/26/2021 00:00)之间的差值,作为一整天的一部分。以下是 T-SQL 中的等价物:

DECLARE @Punch_Start datetime2 = '7/25/2021 06:44';

SELECT DATEDIFF(
    MINUTE,
    @Punch_Start, 
    CAST(
        CAST(
            DATEADD(DAY, 1, @Punch_Start)
        AS date) -- Add 1 day to @Punch_Start & cast as date to remove the time component - this is the start of the next day
    AS datetime2) -- Cast back to datetime2 to get the difference in minutes
) / 1440.; -- Divide the difference in minutes by the number of minutes in a day (60 minutes per hour, 24 hours per day) to get the difference as a fraction of a day