【问题标题】: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)请为您使用的数据库产品添加标签postgresql,oracle,db2, sql-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));