【问题标题】:How to deal with NULL value while using DATEPART?使用 DATEPART 时如何处理 NULL 值?
【发布时间】:2014-11-06 18:04:03
【问题描述】:

我正在使用 SQL 2008 R2,并且我在其中一个选择行中使用了 DATEPART,这会将日期和时间列转换为基于时间的小数。

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

请参阅下面我使用过 datepart 的地方,但也想将 null 值更改为 0。

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

有人可以帮忙吗?

【问题讨论】:

    标签: sql-server-2008-r2 isnull datepart


    【解决方案1】:

    解决这个问题的正确方法是使用COALESCE 语句将空值更改为0。

    试试这样的

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

    【讨论】:

    • 嗨,Ian,刚刚测试过,效果很好。非常感谢,这让我发疯了。如您所见,我对此仍然很陌生。再次感谢您的帮助!
    • 我认为使用ISNULL 实际上更好,因为它实际上摆脱了空值。 COALESCE 仍然返回一个可为空的类型。
    猜你喜欢
    • 2019-10-16
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多