SQL 服务器 returns 上的 DATEDIFF 函数在我使用变量时为空值

DATEDIFF function on SQL server returns a null value when I use variables

我正在尝试获取开始时间和结束时间之间的总分钟数。此数据位于同一 table、同一列中,我已将变量设置为 return 我需要的值。

到目前为止,一切正常。现在,当我将 DATEDIFF 与变量一起使用时,问题就来了 returns NULL:

DECLARE @hol datetime

SET @hol = (
    SELECT fecha_Registro  
    FROM Registro  
    WHERE id_Registro = 4  
        AND id_Tipo_Registro = 2
);  

SELECT @hol as varText 

DECLARE @bye DATETIME 

SET @hol = (
    SELECT fecha_Registro  
    FROM Registro  
    WHERE id_Registro = 3  
        AND id_Tipo_Registro = 1
);  

SELECT @hol as varText2  

SELECT DATEDIFF(MI, @bye, @hol) as total_minutos 

如您所见,变量具有正确的值,因此,我不明白为什么它会返回 null。当我使用实际日期执行此操作时,它工作正常。

您声明了 @bye 变量,该变量未在任何地方赋值。所以它得到 NULL 默认值,所以 DATEDIFF(MI, @bye, @hol) 也评估为 null

还有一种可能是查询

select fecha_Registro  
from Registro  
where id_Registro = 3  
and id_Tipo_Registro = 1

returns NULL.