SQL Server:计算列DATEDIFF子句

时间:2013-01-27 20:35:00

标签: sql sql-server formula datediff

我要做的是以下内容:我有3列(Control_OpenDateControl_Record AgeControl_Stage2)。插入行后,它将填充Control_OpenDate(2013年1月27日)和Control_RecordAge(计算列,请参阅公式)。

(datediff(day, [Control_OpenDate], getdate()))

给出了最新的日子。

一切都工作得很完美,但是如果没有填充列IF,我想在计算列中添加Control_Stage2条件,不要计算或添加文本......

如何在上述公式中添加WHERE - 语句?

注意:我正在将这样的公式直接输入到列属性中,我知道有些查询可以做到这一点,但有没有办法通过公式来实现。

2 个答案:

答案 0 :(得分:4)

可以使用CASE语句完成此操作,如here所示。

您的逻辑将如下所示:

(CASE 
    WHEN [Control_Stage2] IS NULL THEN NULL -- or -1 or what you like
    ELSE datediff(day,[Control_OpenDate],getdate())
END)

答案 1 :(得分:0)

这也可以写成三元语句(https://www.googleapis.com

IIF(布尔表达式,true_value,false_value)

IIF是编写CASE表达式的简便方法。它评估作为第一个参数传递的布尔表达式,然后根据评估结果返回其他两个参数之一。也就是说,如果布尔表达式为true,则返回true_value;如果布尔表达式为false或未知,则返回false_value

E.G。

iif([Control_Stage2] is null, null, datediff(day,[Control_OpenDate],getdate()))