SELECT logcount, logUserID, maxlogtm
, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE daysdiff > 120
我懂了
Maxlogtm是日期时间字段。是让我发疯的小东西。
最佳答案
SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)
通常,您不能在
WHERE
子句中引用字段别名。 (将其视为包括别名在内的整个SELECT
,在WHERE
子句之后应用。)但是,如其他答案所述,您可以强制SQL将
SELECT
视为在WHERE
子句之前处理。通常使用圆括号来强制操作的逻辑顺序,或者使用通用表表达式(CTE)来完成此操作:括号/子选择:
SELECT
*
FROM
(
SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
) as innerTable
WHERE daysdiff > 120
或参阅亚当的CTE版本答案。