我不太擅长SQL,但我无法弄清楚为什么这不起作用。我只想根据一个值运行不同的 AND 语句。具体来说,如果 foo = 0,则想要更改 dateDiff 函数中的 datePart。
SELECT foo,
bar,
test
FROM table
WHERE bar = 1,
CASE WHEN foo = 0
AND dateDiff(dd, getDate(), 2 ) < test
ELSE
AND dateDiff(hh, getDate(), 2 ) < test
END
CASE
表达式,而实际上,他们真正需要的只是基本的逻辑运算符。 - Damien_The_Unbeliever(foo = 0 AND DATEDIFF(dd,...) OR foo!=0 AND DATEDIFF(hh,...))
即可。 - Damien_The_UnbelieverDATEDIFF
调用都不会做你想要的事情。提示:DATEDIFF
返回一个整数,如果与datetime
比较,则会被隐式转换为自1900年1月1日以来的天数。而DATEDIFF
的第三个参数应该是一个日期,2
将被隐式转换为1900-01-03
。 - Damien_The_Unbeliever