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版本答案。

09-05 20:48