Datediff NULL查询

时间:2016-05-19 14:28:44

标签: sql-server null datediff

我对SQL很新,并且对于datediff函数有疑问。

我想带回所有结算日期在原始截止日期的1到180天之间的帐户,我可以按照以下方式办理。

DATEDIFF(DD,odd.[date],sett.[date]) between 1 and 180

我如何也包括所有定居日期可能为NULL的地方?

由于

2 个答案:

答案 0 :(得分:0)

这取决于如何解释NULL值以及使用isnull函数。

如果NULL表示“今天”,请使用

DATEDIFF(DD, isnull(odd.[date], getdate()), isnull(sett.[date], getdate()) between 1 and 180

如果NULL表示“从不符合条件”,请使用始终取消其资格的虚拟日期。如果其中一个/或两个值都为空,则以下 应始终返回负数:

DATEDIFF(DD, isnull(odd.[date], 'Dec 31, 2100'), isnull(sett.[date], 'Jan 1, 1980') between 1 and 180

如果适用其他日期值,请确定并将其设置为相应isnull中的第二个值。

答案 1 :(得分:0)

您可以将其附加到WHERE子句中,如下所示:

SELECT * FROM <tables join> 
WHERE DATEDIFF(DD,odd.[date],sett.[date]) between 1 and 180 
OR 
sett.[date] IS NULL