sql - SQL查询选择两个日期之间的日期并排除两个日期之间的日期
问题描述
CREATE TABLE [dbo].[#temp1]
(
[workDate] [datetime] NULL,
[Id] [int] NULL,
) ON [PRIMARY]
INSERT INTO [dbo].[#temp1]
VALUES ('12-01-2018', '11'), ('11-01-2018', '11'),
('10-01-2018', '11'), ('09-01-2018', '11')
CREATE TABLE [dbo].[#temp2]
(
[workDate] [datetime] NULL,
[Id] [int] NULL,
) ON [PRIMARY]
INSERT INTO [dbo].[#temp2]
VALUES ('10-01-2018', '11'), ('09-01-2018', '11')
我有 2 张带日期的桌子。
我想选择所有日期,#temp1
但不计算#temp2
.
我用过,但没有得到想要的结果:
select A.workDate, A.Id
from [dbo].[#temp1] A
left join [dbo].[#temp2] B on A.Id = B.Id and A.workDate = B.workDate
where A.workDate between CAST('09.01.2018' as datetime) and CAST('12.01.2018' as datetime)
or B.workDate not between CAST('09.01.2018' as datetime) and CAST('10.01.2018' as datetime)
我想得到的结果:
workDate Id
-------------------------------
2018-01-12 00:00:00.000 11
2018-01-11 00:00:00.000 11
如何解决?
解决方案
您编写查询的方式取决于表中的值。如果您已经知道要选择的日期,则可以这样做:
where A.workDate between CAST('11.01.2018' as datetime) and CAST('12.01.2018' as datetime)
相反,您可能想要的是选择left join
不匹配任何内容的行:
where B.workDate is null
推荐阅读
- websocket - 无法使用 Agora Web SDK NG 在移动数据上发布 RTC 客户端
- ubuntu - visual studio 2019 无法通过 ssh 进入 wsl ubuntu 18.04
- php - PHP - 使用匹配表达式提取表格的单元格值
- python - 使用 Django 设置 Apache 服务器(希望也使用 git)
- webstorm - WebStorm,在使用整体深色主题时是否可以在预览中使用 GitHub markdown 主题?
- reactjs - 使用 useEffect 渲染的钩子比上一次渲染时更多
- reactjs - 在反应中,将值传递给函数会导致“未终止的模板”以及其他错误
- php - 引用打印的电子邮件主题行没有被电子邮件客户端解码
- reactjs - 如何根据变化的数字渲染多个对象
- java - 通过 Eclipse 运行“Hello World”程序的访问被拒绝