Sql server 2008 r2 使用DATEPART时如何处理空值?
我使用的是SQL 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
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
仍然返回可为空的类型。