我对SQL很新,并且对于datediff函数有疑问。
我想带回所有结算日期在原始截止日期的1到180天之间的帐户,我可以按照以下方式办理。
DATEDIFF(DD,odd.[date],sett.[date]) between 1 and 180
我如何也包括所有定居日期可能为NULL的地方?
由于
答案 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