Sql server 2008 r2 使用DATEPART时如何处理空值?

Sql server 2008 r2 使用DATEPART时如何处理空值?,sql-server-2008-r2,isnull,datepart,Sql Server 2008 R2,Isnull,Datepart,我使用的是SQL 2008 R2,并且在我的一行选择中使用了DATEPART,这会根据时间将日期和时间列转换为十进制 但是我有一些NULL值要显示为0。我在其他列中使用了ISNULL,但在这一列中无法使用它,因为我不知道如何将它与DATEPART结合使用 请参阅下面我使用datepart的地方,但也希望将空值更改为0 DATEPART(hour, tblCarerContract.ContractHours) + (DATEPART(minute, tblCarerContract.Contra

我使用的是SQL 2008 R2,并且在我的一行选择中使用了DATEPART,这会根据时间将日期和时间列转换为十进制

但是我有一些
NULL
值要显示为0。我在其他列中使用了
ISNULL
,但在这一列中无法使用它,因为我不知道如何将它与DATEPART结合使用

请参阅下面我使用datepart的地方,但也希望将空值更改为0

DATEPART(hour, tblCarerContract.ContractHours) + (DATEPART(minute, tblCarerContract.ContractHours) / 60.0) as ContractHours

任何人都能帮上忙。

正确的方法是使用语句将空值更改为0

试试这样的

COALESCE(DATEPART(hour, tblCarerContract.ContractHours), 0) + (COALESCE(DATEPART(minute, tblCarerContract.ContractHours), 0) / 60.0) as ContractHours

嗨,伊恩,刚刚测试过,效果很好。非常感谢你,这让我快发疯了。正如你所看到的,我对这一点还很陌生。再次感谢您的帮助!我认为实际上最好使用
ISNULL
,因为它实际上消除了null属性
COALESCE
仍然返回可为空的类型。