【问题标题】:how to exclude data by date filtering如何按日期过滤排除数据
【发布时间】:2018-11-13 22:37:06
【问题描述】:

我需要实现以下逻辑

​排除患者日期为事件日期或事件日期前 1 天的患者:

select patient,[patient date], [event date] 
from stu_tbl 
where [patient date] <> DATEADD(d, - 1, [event date]) and 
      [patient date] <> [event date];

患者日期将是多个

上述条件会起作用吗?

【问题讨论】:

  • 它应该可以工作,虽然它可能有点难以阅读
  • 您使用的是哪个DBMS? “SQL”只是一种查询语言,不是特定数据库产品的名称(并且您使用的是非标准SQL)请为您使用的数据库产品添加标签postgresqloracledb2sql-server, ...

标签: sql sql-server date datetime


【解决方案1】:

听起来更像你想要的

select patient,
           [patient date],
           [event date]
           from stu_tbl
           where [patient date] >= DATEADD(d, - 1, [event date])
                      and [patient date] < cast([event date] AS date);

【讨论】:

    【解决方案2】:

    要添加多个患者日期,您可以使用 IN 运算符 在哪里条件。 像

    select patient,[patient date], [event date] 
    from stu_tbl 
    where [patient date] NOT IN (patient date1, patient date2)
    

    【讨论】:

      【解决方案3】:

      试试这个:

          select patient,
             [patient date],
             [event date]
             from stu_tbl
             where [patient date] NOT IN (DATEADD(d, - 1, [event date]), [event date])
      

      【讨论】:

        【解决方案4】:

        试试这个

        select patient,[patient date], [event date] 
        from stu_tbl 
        where DateDiff(Day, [patient date], [event date]) < 0
        

        【讨论】:

          【解决方案5】:

          您的日期可能包含时间部分。如果是这样:

          select patient, [patient date], [event date] 
          from stu_tbl 
          where [patient date] <  dateadd(day, -1, cast([event date] as date)) or 
                [patient date] >= dateadd(day, 1, cast([event date] as date));
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-11-27
            • 1970-01-01
            • 1970-01-01
            • 2023-01-24
            • 1970-01-01
            • 1970-01-01
            • 2021-03-29
            • 1970-01-01
            相关资源
            最近更新 更多