搜索

首页  >  问答  >  正文

使用 AND 运算符增强日期计算

我确信这是一个简单的修复方法,但我在任何地方都找不到它。我正在尝试使用 AND 来影响查询的结果。查询如下。

select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
from table1
where log_in < date_opened;

所以第一个查询工作正常。它只给我log_in日期小于date_opened的行,然后是两者之间的总天数差异,这很棒。但是,我希望在查询中添加 AND 以排除某些总计。例如下面的例子:

select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
from table1
where log_in < date_opened and date_diff > 1;

问题是别名列 date_diff 未被识别为真实列,因此我收到一条错误消息。我尝试使用 HAVING 而不是 AND,但这不起作用(不是我想象的那样)。我基本上想排除零的行。有人知道我会用什么来代替“and date_diff > 1”吗?

P粉554842091P粉554842091256 天前341

全部回复(1)我来回复

  • P粉308089080

    P粉3080890802024-03-23 10:52:05

    重复 where 子句中的表达式(即使用 datediff(log_in, date_opened) > 1 而不是 date_diff > 1),或者使用派生表,然后在封闭的查询中添加条件。

    使用派生表的示例:

    select first_name, log_in, date_opened, date_diff
    from (
        select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
        from table1
        where log_in < date_opened
    )
    where date_diff > 1
    

    回复
    0
  • 取消回复