当我使用变量时,SQL server上的DATEDIFF函数返回一个空值



我正在尝试获取开始时间和结束时间之间的总分钟数。这些数据在同一个表、同一列中找到,我设置了一个变量来返回我需要的值。

到目前为止,一切都很顺利。现在,当我对变量使用DATEDIFF时,问题来了,因为它返回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

返回CCD_ 6。

最新更新